2015-09-26 90 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 
      ]); 
     } 
    } 
}