2015-09-26 11 views
8

ho seguito questo Link. Il mio codice è il seguente controllerCome impostare un messaggio flash in 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]); 
    } 

nella vista

<div id="message"> 

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

ora il risultato di quello che ho fatto non è quello che mi aspettavo. Ho ricevuto un messaggio "inserito con successo nella pagina di pagamento" come se l'avessi fatto eco. Se è simile all'eco, allora perché abbiamo bisogno di un messaggio flash in Yii2. Penso che potrebbe mancare qualcosa nel mio codice che fa apparire il mio messaggio flash come normale.

+3

Sei confuso su ciò che un lampo messaggio è (in yii). È semplicemente un messaggio che verrà mostrato una volta e quindi rimosso dalla sessione. – DrunkWolf

+0

sì, ero un po 'confuso. – Bloodhound

risposta

20

aggiungere sotto il codice nel file controller come:

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

e anche aggiungere di seguito il codice nel file view come:

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

grazie sta funzionando. quindi ora ho due modi per farlo :-) – Bloodhound

+0

Bella risposta. Grazie. – Chinmay235

+0

[Questo] (http://www.devprofessor.com/yii2/use-yii2-flash-message/) spiega un po 'di più su Yii2 Flash Message. –

2

Il vantaggio del messaggio flash è che ottiene mostrata solo una volta. Non è più necessario fornire la logica if/else. E se metti il ​​codice per visualizzare il messaggio flash nel file di visualizzazione del layout (spesso visualizza/layout/main.php) puoi impostare il messaggio flash in ogni azione in cui è necessario, utilizzare le normali risposte o reindirizzamenti e puoi essere sicuro che viene visualizzato solo una volta. Ciò rende la vita un po 'più facile. Questa è l'idea dei messaggi flash - non che scompare dopo un certo periodo.

Vedere la sezione sui messaggi flash nello guide.

+0

grazie. il mio concetto di flash messaging era abbastanza diverso – Bloodhound

1

Meno codice. Se non si desidera altro se condizione seguire

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

E secondo lei

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

Meraviglioso funziona per me – faisal1208

0

Di seguito è la classe controller per prodotti aggiungendo

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