2015-09-26 7 views
8

これに続いてLink。ビューYii2でフラッシュメッセージを設定するには?

<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]); 
    } 

を次のように私のコードは、今私がやったことの結果は、私が期待したものではありません。私はそれをエコーし​​たように、「支払いページに正常に乗った」というメッセージを得ました。もしそれがechoと似ているなら、なぜYii2にフラッシュメッセージが必要なのでしょうか?私はフラッシュメッセージを普通のもののように見せる何かが私のコードでは見つからないかもしれないと思う。

+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

ありがとうございます。だから私は今それを行う2つの方法があります:-) – Bloodhound

+0

良い答え。ありがとうございました。 – Chinmay235

+0

[こちら](http://www.devprofessor.com/yii2/use-yii2-flash-message/)では、Yii2 Flash Messageについて少し詳しく説明しています。ありがとう。 –

2

一度。あなたはif/elseロジックをもう提供する必要はありません。また、レイアウトメッセージ(多くの場合、view/layout/main.php)にフラッシュメッセージを表示するようにコードを設定すると、必要なすべてのアクションでフラッシュメッセージを設定したり、通常の応答やリダイレクトを使用したりすることができますそれは1回だけ表示されることを意味します。それは人生を少し楽にします。それはフラッシュメッセージのアイデアです。一定期間後に消えるわけではありません。

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 
      ]); 
     } 
    } 
} 
関連する問題