如何控制YII闪光的位置?

时间:2012-12-09 19:12:38

标签: yii

使用YII Flashes,您可以执行此操作:

Yii::app()->user->setFlash('success', "Data saved!");

但是,当页面上出现闪光灯时,它会显示如下:

<div id="yw1">
  <div class="alert in alert-block fade alert-info"><a class="close" data-dismiss="alert">×</a>
     MESSAGE
  </div>
</div>

如何控制放置它的位置?我没有在layouts / main.php中看到任何控制它的东西,但它们显示了吗?

3 个答案:

答案 0 :(得分:4)

除非您正在调用它们,否则它们不会显示在任何地方,Yii默认应用程序中的一个很好的示例是站点/联系人视图:

<?php if(Yii::app()->user->hasFlash('contact')): ?>    
    <div class="flash-success">
        <?php echo Yii::app()->user->getFlash('contact'); ?>
    </div>    
<?php else: ?>
    ...

使用setFlash方法设置闪光灯

Yii::app()->user->setFlash('contact','Thank you for contacting us. We will respond to you as soon as possible.');

可能是控制器根类( protected / components / Controller.php )中可能存在检查,其中有人可能编写了init()函数来检查它们。这将在每个控制器/动作调用上调用,因此它可能在那里。

另一种可能性是创建项目的人在框架文件夹中编辑了flash方法(或者可能扩展了它),你可以看看它,它位于 framework / web / auth / CWebUser.php

但正如Mik所说,尝试在项目中进行文字搜索 getFlash ,或者只是 flash

答案 1 :(得分:1)

我会在您的views文件夹中对user-&gt; getFlashes()进行文本搜索。您可以使用此

在任何地方输出消息
<?php
    foreach(Yii::app()->user->getFlashes() as $key => $message) {
        echo '<div class="flash-' . $key . '">' . $message . "</div>\n";
    }
?>

答案 2 :(得分:0)

开发人员需要显示Flash消息。 Yii不会为你做那件事。

您可以在Eskimo和Mik所显示的视图中显示它们,位于您自己选择的位置。 Yii永远不会那样做,因为Yii不知道您的视图的布局。