使用Zend Framework FlashMessenger和jQuery UI状态类

And*_*rew 4 css zend-framework jquery-ui

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

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

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

在我的布局中,我使用Noumenal FlashMessenger View Helper显示消息

// layout.phtml
<?php echo $this->flashMessenger(); ?>
Run Code Online (Sandbox Code Playgroud)

我想利用我的jQuery UI主题的CSS样式来设置我的错误消息,如下所示:

<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>
Run Code Online (Sandbox Code Playgroud)

...但是View Helper正在完成所有的工作,所以我无法改变我想要的类.所以在走下死路之前,我想我会问社区.这是我的问题:

  1. 我如何使用Zend Framework FlashMessenger,以便根据状态(错误/成功)设置不同的消息?
  2. 如何从FlashMessenger获取消息并将其显示在一个位置,而无需在所有控制器中创建重复的代码?
  3. 如何为每个不同的消息状态输出不同的类?例如: 'error'=>'ui-state-error', 'info'=>'ui-state-highlight'

Car*_*son 9

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

回答你的问题:

添加消息

您可以设置不同的信息水平,例如error,warning等等,通过传递数组以FlashMessenger动作助手,而不是一个简单的字符串:

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

视图助手旨在识别这一点.

输出消息

在布局中输出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);
Run Code Online (Sandbox Code Playgroud)

(您可能会发现将模板设置为视图变量更好,例如,您的引导程序.)

执行此操作视图助手将根据需要为您构建格式正确的Flash消息.

一些简单的造型

使用CSS将有足够的空间来适当地设置消息的样式.例如:

.alert {
    color: red;
}

.alert .flash-message:before {
    content: "<strong>Alert</strong> ";
}

.notice {
   color:yellow;
}

.notice .flash-message:before {
    content: "<strong>Notice</strong> ";
}    
Run Code Online (Sandbox Code Playgroud)

我告诉你即兴发挥......

在我的博客上写了Zend Framework FlashMessenger和视图助手指南.也许给那个读一读.另外,请给我发电子邮件让我知道你的困难 - 这将帮助我了解我需要改进的地方.

我希望有所帮助.