2

我正在通过 ajax 调用返回通知

$app = JFactory::getApplication();
$app->enqueueMessage('Joomla notice', 'info');

在前端,这会导致以下结果(注意空标题):

<div id="system-message-container">
  <div id="system-message" class="alert alert-info">
    <h4 class="alert-heading"></h4>
    <div>
      <p>Joomla notice </p>
    </div>
  </div>
</div>

但是,我也想像在后端一样显示带有标题和关闭按钮的通知,即

<div id="system-message-container">
  <button type="button" class="close" data-dismiss="alert">×</button>
  <div class="alert alert-info">
    <h4 class="alert-heading">Info</h4>
    <p>Joomla notice</p>
  </div>
</div>

有没有 Joomla 方法可以做到这一点,还是我必须想出一个解决方法?

4

2 回答 2

4

media/system/js/core.js消息由Joomla.renderMessages函数呈现。您可以在模板中使用

jQuery(function() {
     Joomla.renderMessages = function(messages) {
       // copy / adapt the original function here.
     }
});

html/message.php此外,可以通过模板覆盖自定义非 ajax 消息。

于 2013-11-09T09:04:45.940 回答
2

在您排队您的消息后,我建议发送消息,例如

echo new JResponseJson($data);
JFactory::getApplication()->close();

然后您可以在客户端处理消息数组,如@Riccardo 的解决方案。例如我的 ajax 成功函数看起来像

success: function(responseText){
    var json = jQuery.parseJSON(responseText);
    Joomla.renderMessages(json.messages);
    ....

你可以在这里找到代码https://github.com/Digital-Peak/DPAttachments/blob/master/com_dpattachments/admin/libraries/dpattachments/core.php#L162

于 2013-11-09T20:34:59.790 回答