2015-09-26 44 views
8

我跟着这个Link。我的代码视图如何在Yii2中设置Flash消息?

<div id="message"> 

      <?= Yii::$app->session->getFlash('success');?> 
     </div> 

现在我所做的是不是我所期待的结果在控制器

public function actionFunction4() 
    { 
     $this->layout="sintel"; 
     $model= new Customers(); 
     \Yii::$app->getSession()->setFlash('success', 'successfully got on to the payment page'); 
     return $this->render("function4",['model'=>$model]); 
    } 

如下 。我收到了一条“成功进入付款页面”的消息,就像我已经回应了一样。如果它与回声相似,那么为什么我们需要在Yii2中提供一个Flash消息。我想我可能会在我的代码中丢失一些东西,使我的Flash消息看起来像普通的消息。

+3

你困惑的控制器类东西闪光消息是(在yii中)。这只是一个消息,只会显示一次,然后从会话中删除。 – DrunkWolf

+0

是的,我有点困惑。 – Bloodhound

回答

20

添加下面的代码在你的controller文件,如:

Yii::$app->session->setFlash('success', "Your message to display"); 

而且也在你view文件中像添加如下代码:

<?php if (Yii::$app->session->hasFlash('success')): ?> 
    <div class="alert alert-success alert-dismissable"> 
    <button aria-hidden="true" data-dismiss="alert" class="close" type="button">×</button> 
    <h4><i class="icon fa fa-check"></i>Saved!</h4> 
    <?= Yii::$app->session->getFlash('success') ?> 
    </div> 
<?php endif; ?> 
+0

感谢它的工作。所以我现在有两种方法来做到这一点:-) – Bloodhound

+0

很好的答案。谢谢。 – Chinmay235

+0

[This](http://www.devprofessor.com/yii2/use-yii2-flash-message/)解释了关于Yii2 Flash Message的更多信息。 –

2

闪光灯消息的优点是,它只有所示一旦。您不需要再提供if/else逻辑。如果您将代码显示在布局视图文件(通常为view/layout/main.php)中,则可以在需要的每个操作中设置Flash消息,使用正常响应或重定向,您可以确定它只显示一次。这让生活变得更轻松。这是闪光消息的想法 - 并不是说​​它在一段时间后会消失。

请参阅有关guide中的快速消息部分。

+0

谢谢。我的闪光消息的概念很不同 – Bloodhound

1

较少代码。如果你不希望别人是否遵循条件

Yii::$app->session->setFlash('msg', ' 
    <div class="alert alert-success alert-dismissable"> 
    <button aria-hidden="true" data-dismiss="alert" class="close" type="button">×</button> 
    <strong>Validation error! </strong> Your message goes here.</div>' 
); 

而且在你看来

<?= Yii::$app->session->getFlash('msg') ?> 
+1

奇妙的是它适合我 – faisal1208

0

下面是增加产品

class ProductsController extends \yii\web\Controller 
{ 
    public function actionCreate() 
    { 
     $ProductsModel = new Products(); 

     if ($ProductsModel->load(Yii::$app->request->post()) && $ProductsModel->save()) { 
      Yii::$app->session->setFlash('success', "Product Added Successfully"); 
      return $this->redirect(['create']); 
     } 
     else{ 
      return $this->render('create', [ 
       'ProductsModel' => $ProductsModel 
      ]); 
     } 
    } 
}