2017-10-14 112 views
0

是否有任何方式在彈出窗口或微調框中顯示Flash消息。現在我正在顯示一個自定義jQuery的Flash消息來隱藏它。Yii2在彈出窗口或微調框中顯示Flash消息

在控制器

\Yii::$app->getSession()->setFlash('error', 'Verification Failed..... Try GPRS Communication again!!'); 

在查看

<div id="statusMsg" > 
        <?= Yii::$app->session->getFlash('error');?> 
     </div> 

$(document).ready(function(){ 
       setTimeout(function() { 
        $('#statusMsg').fadeOut('fast'); 
       }, 5000); // <-- time in milliseconds 
     }); 

我想顯示彈出式或微調此提示信息。

任何幫助將不勝感激

回答

0

我擴展了Kartik的警報部件。並使用它。

class AlertModal extends \yii\bootstrap\Widget 
    { 

........... 
public $alertTypes = [ 
     'modal-error' => 'alert-error', 
     'modal-danger' => 'alert-danger', 
     'modal-success' => 'alert-success', 
     'modal-info' => 'alert-info', 
     'modal-warning' => 'alert-warning' 
    ]; 
    ......... 
     public function init() 
     { 
    ...... 

Modal::begin([ 
    'id' => 'modal-' . $this->options['id'], 
    'header' => '<h2>warning</h2>', 
    'toggleButton' => false, 
    'clientOptions' => ['show' => true] 
]); 
/** original part */ 
    echo \yii\bootstrap\Alert::widget([ 
     'body' => $message, 
    'closeButton' => false, 
     'options' => $this->options, 
     ]); 
/** \original part */ 
    Modal::end(); 

..... 
} 
... 
} 

佈局:

<?= \app\components\widgets\AlertModal::widget() ?> 
<?= Alert::widget() ?> 

在控制器:

Yii::$app->session->setFlash('modal-danger', 'you message'); 
0

可以使用卡爾蒂克低吼擴展:http://demos.krajee.com/widget-details/growl

查看佈局/主

use kartik\growl\Growl; 
<body> 
..... 
    <?php foreach (Yii::$app->session->getAllFlashes() as $message):; ?> 
     <?php 

     echo Growl::widget([ 
      'type' => (!empty($message['type'])) ? $message['type'] : 'danger', 
      'title' => (!empty($message['title'])) ? Html::encode($message['title']) : 'Title Not Set!', 
      'icon' => (!empty($message['icon'])) ? $message['icon'] : 'fa fa-info', 
      'body' => (!empty($message['message'])) ? Html::encode($message['message']) : 'Message Not Set!', 
      'showSeparator' => true, 
      'delay' => 1, //This delay is how long before the message shows 
      'pluginOptions' => [ 
       'delay' => (!empty($message['duration'])) ? $message['duration'] : 3000, //This delay is how long the message shows for 
       'placement' => [ 
        'from' => (!empty($message['positonY'])) ? $message['positonY'] : 'top', 
        'align' => (!empty($message['positonX'])) ? $message['positonX'] : 'right', 
       ] 
      ], 
      'useAnimation'=>true 
     ]); 
     ?> 
    <?php endforeach; ?> 
</body> 

Controller.php

public function actionSome(){ 
    .......your code here 
    Yii::$app->getSession()->setFlash('success', [ 
          'type' => 'success', 
          'duration' => 5000, 
          'icon' => 'glyphicon glyphicon-ok', 
          'message' => ' your Message', 
          'title' => 'Title of pop up', 
          'positonY' => 'top', 
          'positonX' => 'right' 
         ]); 
    return $this->render('yourview'); 
}