CakePHP setFlash()严重性(';良好';/';不良';)不工作?

CakePHP setFlash()严重性(';良好';/';不良';)不工作?,php,cakephp,Php,Cakephp,在我的控制器中使用$this->Session->setFlash(“某个bog标准消息”)时,flash消息会按预期正确显示。默认样式为红色,看起来像是错误。它说明了可以通过向$key参数传递字符串来更改闪存消息的严重性。文档使用“好”和“坏”,但将代码调整为以下内容时: $this->Session->setFlash('A good message!', 'default', array(), 'good'); 根本没有闪光信息,甚至没有默认的红色信息。我必须这样做才能达到预

在我的控制器中使用
$this->Session->setFlash(“某个bog标准消息”)
时,flash消息会按预期正确显示。默认样式为红色,看起来像是错误。它说明了可以通过向
$key
参数传递字符串来更改闪存消息的严重性。文档使用“好”和“坏”,但将代码调整为以下内容时:

$this->Session->setFlash('A good message!', 'default', array(), 'good');
根本没有闪光信息,甚至没有默认的红色信息。我必须这样做才能达到预期效果:

$this->Session->setFlash('A good message!', 'default', array('class' => 'message success'));

这是坏的还是我遗漏了什么?

解释这本书如何引用你可以做到的:

如果你想改变颜色,你需要改变它们的样式。他们在书中引用的关键点只是向您展示了如何编写不同的flash消息-它与消息的实际样式无关-只是在以下位置编写其中一条:

//Controller
// set a bad message.
$this->Session->setFlash('Something bad.', 'default', array(), 'bad');

// set a good message.
$this->Session->setFlash('Something good.', 'default', array(), 'good');

// in a view.
echo $this->Session->flash('good');
echo $this->Session->flash('bad');
所以,如果你想改变它的风格,你可以用一个div或者别的什么东西来包装“good”,然后给它一个类,然后改变它的风格。发挥你的想象力——但关键是,这把钥匙不会改变它的视觉风格,而是一把钥匙,参照着它是/应该写的钥匙

如何操作-使用元素和参数更改视觉样式:

下面是我如何设置我的警报消息-这使用Twitter引导类和图标,它们根据我发送给“通知”元素的“类型”参数改变警报的外观。当然,它可以根据您的需要进行编辑,但您应该了解您可以选择的另一条路线

$this->Session->setFlash(__('This is my success message'),
    'notifications', array('type'=>'success'));

$this->Session->setFlash(__('This is my failure message'),
    'notifications', array('type'=>'fail'));

//'notifications' element
<?php
$icon = 'icon-ok-sign';
if(!empty($type)) {
    switch($type) {
        case 'fail':
            $type='danger';
        case 'danger':
            $icon = 'icon-warning-sign';
            break;
        case 'info':
            $icon = 'icon-info';
            break;
        case 'success':
            $icon = 'icon-ok-sign';
            break;
        case 'error':
            $type = 'danger';
            $icon = 'icon-warning-sign';
            break;
    }
}

?>
<div class="alert alert-<?php echo $type ?>">
    <button type="button" class="close" data-dismiss="alert">×</button>
    <i class="<?php echo $icon ?>"></i> <?php echo $message; ?>
</div>
$this->Session->setFlash(_u('这是我的成功消息'),
“通知”,数组('type'=>'success');
$this->Session->setFlash(_u(‘这是我的失败消息’),
“通知”,数组('type'=>'fail');
//“通知”元素

我亲自为警报创建一个视图元素,然后在我的
setFlash()调用中传递一个类名

<!-- View/Elements/flash.ctp -->
<div class="alert alert-<?php echo $class; ?>">
  <p><?php echo $message; ?></p>
</div>

这是预期的行为,正如文档所描述的,当使用
参数时,您也必须在视图中使用适当的
,即
$This->Session->flash('good')
。1)我不相信这回答了他关于“为什么它不工作”的问题,2)这似乎正是我已经解释过的。天哪,我只是误解了它!好的,我现在明白了,谢谢你的解释。
public function add() {
    if ($this->request->is('post')) {
        if ($this->Model->save($this->request->data)) {
            $this->Session->setFlash('Lorem ipsum.', 'flash', array('class' => 'success'));
        }
    }
}