在 Yii 框架中实现 flash 消息

Implementing flash messages in Yii framework

这是我的控制器的功能:

public function actionUser(){
        Yii::app()->user->setFlash('success', "Data1 saved!");
....
}

在视图中如果我这样写:

<?php echo Yii::app()->user->getFlash('success'); ?> 

它有效,但我想出现在内容上方的某个位置,然后在几秒钟后自动淡出。我从 here

试过这个
<?php
Yii::app()->clientScript->registerScript(
   'myHideEffect',
   '$(".info").animate({opacity: 1.0}, 3000).fadeOut("slow");',
   CClientScript::POS_READY
);
?>

但我不明白 myHideEffect 和 class .info 是谁?有人可以给我举个例子吗?或 link 演示? 谢谢.

这是一个基于 jquery 的问题,而不是基于 yii 的。但是试试这个:

<?php if(Yii::app()->user->hasFlash("success")): ?>
      <div id="message">
          <?php echo Yii::app()->user->getFlash('success'); ?>
      </div>
<?php endif; ?>

...

<script>
   $(document).ready(function() {
       setTimeout(function() {
           $('#message').fadeOut('slow');
       }, 3000);
   });
</script>

下面有两种闪现消息的实现,我们可以使用toastr通知或正常的bootstrap闪现消息实现来显示消息。

如果您想将消息显示为 toastr 通知,请将这行代码作为您的控制器操作。

YII::app()->user->setFlash('toastr.error', 'An Error occured when saving');

如果您想使用普通的 bootstrap 闪现消息,请改用。

YII::app()->user->setFlash('alert alert-danger', 'An Error occured.');

为此,您必须按如下方式处理主视图布局上的即显消息。很可能就在 <?php echo $content; ?>

之前
    /** Takes care of the flashmessages **/
    $flashMessages = Yii::app()->user->getFlashes();
    if ($flashMessages) {

        foreach ($flashMessages as $key => $message) {
          $pattern = '/\s/';
            $match = preg_match($pattern, $key);/* This checks the type of error message to use if the error $key is just one word then use toastr notification */
            if ($match == 0) {
                Yii::app()->clientScript->registerScript(
                        'myNotifyEffect', $key . '("' . $message . '");', CClientScript::POS_READY
                );
            } elseif ($match > 0) {

                if ($key != 'alert alert') {
                    Yii::app()->clientScript->registerScript(
                            'myHideEffect', '$(".' . $key . '").animate({opacity: 1.0}, 5000).fadeOut("slow");', CClientScript::POS_READY
                    );
                    echo '<div class= "' . $key . ' alert-bold-border square fade in alert-dismissable">' . '<button class="close" data-dismiss="alert" type="button">×</button>' . $message . "</div>\n";
                } else {
                    echo '<div class="' . $key . ' alert-bold-border square fade in alert-dismissable">' . '<button class="close" data-dismiss="alert" type="button">×</button>' . $message . "</div>\n";
                }
            }
        }
    }