我有一个使用 jQuery UI 的 Zend Framework 应用程序。

在我的 Controller 中,我使用 FlashMessenger 助手设置错误/成功消息,如下所示:

// ExampleController.php
$this->_helper->FlashMessenger('Sorry, could not complete your request.');

在我的布局中,我使用 Noumenal FlashMessenger View Helper 显示消息
// layout.phtml
<?php echo $this->flashMessenger(); ?>

我想使用我的 jQuery UI theme's CSS styles 来设置我的错误消息的样式,如下所示:
<div class="ui-state-error ui-corner-all">
    <p><span class="ui-icon ui-icon-alert"></span>
    <strong>Alert:</strong> Sample ui-state-error style.</p>
</div>

...但 View Helper 正在完成所有工作,所以我无法更改我想要的类。所以在走上一条死胡同之前,我想我应该问问社区。以下是我的问题:
  • 如何使用 Zend Framework FlashMessenger 以便我可以根据状态(错误/成功)设置不同的消息?
  • 如何从 FlashMessenger 获取消息并将它们显示在一个地方,而不必在我的所有 Controller 中创建重复的代码?
  • 如何为每个不同的消息状态输出不同的类?例如:'error'=>'ui-state-error', 'info'=>'ui-state-highlight'
  • 最佳答案

    写完 Noumenal FlashMessenger View Helper 我应该可以提供帮助。 :-)

    回答你的问题:

    添加消息

    您可以设置不同的消息级别,例如errorwarning 等,通过将数组传递给 FlashMessenger Action Helper 而不是简单的字符串:

    // ExampleController.php
    $this->_helper->FlashMessenger(
         array('error'=>'Sorry, could not complete your request.')
    );
    

    View 助手旨在识别这一点。

    输出消息

    在您的布局中输出 FlashMessages 时,您可以传递一些可选参数来指定默认消息级别(默认为 warning)和消息模板。

    调整您的代码片段以考虑不同的消息级别,您可以通过在布局中进行以下调用来实现所需的结果:
    // layout.phtml
    $template = '<div class="ui-state-error ui-corner-all">
        <p class="%s"><span class="ui-icon ui-icon-alert"></span>
        <span class="flash-message">%s</span></p>
    </div>';
    echo $this->flashMessenger('error', $template);
    

    (你可能会发现将模板设置为一个 View 变量会更好,比如说,你的 bootstrap 。)

    执行此操作后, View 助手将根据您的意愿为您构建适当格式的 Flash 消息。

    一些简单的造型

    使用 CSS 将有足够的空间来适本地设置消息样式。例如:
    .alert {
        color: red;
    }
    
    .alert .flash-message:before {
        content: "<strong>Alert</strong> ";
    }
    
    .notice {
       color:yellow;
    }
    
    .notice .flash-message:before {
        content: "<strong>Notice</strong> ";
    }
    

    我让你即兴发挥...

    我写了一个 guide to Zend Framework FlashMessenger and the view helper on my blog 。也许读一读。也请做 email me to let me know your difficulties - 它会帮助我知道我需要改进的地方。

    我希望这有帮助。

    关于css - 使用 Zend Framework FlashMessenger 和 jQuery UI 状态类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1739096/

    10-11 14:22