2015-09-26 25 views
8

tôi đã theo dõi số Link này. Mã của tôi là như sau trong điều khiểnCách đặt tin nhắn flash trong Yii2?

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

trong giao diện

<div id="message"> 

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

nay là kết quả của những gì tôi đã làm không phải là những gì tôi mong đợi. Tôi đã nhận được một thông báo "đã thành công trên trang thanh toán" như tôi đã chỉnh sửa nó. Nếu nó tương tự như echo thì tại sao chúng ta cần một thông điệp flash trong Yii2. Tôi nghĩ rằng tôi có thể thiếu một cái gì đó trong mã của tôi mà làm cho tin nhắn flash của tôi xuất hiện như một thường xuyên.

+3

Bạn đang bối rối về những gì một đèn flash tin nhắn là (trong yii). Nó chỉ đơn giản là một thông báo sẽ hiển thị một lần, và sau đó bị xóa khỏi phiên. – DrunkWolf

+0

vâng tôi hơi bối rối. – Bloodhound

Trả lời

20

thêm bên dưới mã trong tập tin controller của bạn như:

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

Và cũng thêm bên dưới mã trong tập tin view của bạn như:

<?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

cảm ơn nó đang hoạt động. vì vậy bây giờ tôi có hai cách để làm điều đó :-) – Bloodhound

+0

Câu trả lời hay. Cảm ơn bạn. – Chinmay235

+0

[This] (http://www.devprofessor.com/yii2/use-yii2-flash-message/) giải thích thêm một chút về Thông báo Flash Yii2. –

2

Ưu điểm của thông điệp flash được rằng nó được chỉ được hiển thị Một lần. Bạn không cần cung cấp logic if/else nữa. Và nếu bạn đặt mã để hiển thị thông báo flash trong tệp xem bố cục (thường xem/bố trí/main.php), bạn có thể đặt thông báo flash trong mọi hành động cần thiết, sử dụng phản hồi hoặc chuyển hướng bình thường và bạn có thể chắc chắn nó được hiển thị chỉ một lần duy nhất. Điều đó làm cho cuộc sống dễ dàng hơn một chút. Đó là ý tưởng của các thông điệp flash - không phải là nó biến mất sau một khoảng thời gian nhất định.

Xem phần về thông báo flash trong guide.

+0

cảm ơn. khái niệm về sự lộn xộn của flash khá khác nhau – Bloodhound

1

Ít mã hơn. Nếu bạn không muốn nếu điều kiện khác theo

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>' 
); 

Và theo quan điểm của bạn

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

Tuyệt vời nó hoạt động cho tôi – faisal1208

0

Dưới đây là lớp điều khiển để thêm sản phẩm

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 
      ]); 
     } 
    } 
} 
Các vấn đề liên quan