0

使用YII Flash,您可以这样做:

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

但是,当 flash 出现在页面上时,它看起来像这样:

<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 中没有看到任何控制它的东西,但它们显示了吗?

4

3 回答 3

4

除非你打电话给他们,否则他们不会在任何地方显示,Yii 默认应用程序中的一个很好的例子是站点/联系人视图:

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

并且使用setFlash方法设置flash

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进行文本搜索

于 2012-12-09T21:40:56.000 回答
1

我会在您的视图文件夹中对 user->getFlashes() 进行文本搜索。您可以使用此功能在任何地方输出消息

<?php
    foreach(Yii::app()->user->getFlashes() as $key => $message) {
        echo '<div class="flash-' . $key . '">' . $message . "</div>\n";
    }
?>
于 2012-12-09T19:16:20.237 回答
0

您,开发人员,需要显示 Flash 消息。Yii 不会为你做这些。

您将它们显示在视图中,如 Eskimo 和 Mik 所示,位于您自己选择的位置。Yii 永远做不到,因为 Yii 不知道你的视图布局。

于 2012-12-09T22:20:50.057 回答