2017-06-27 8 views
3

私はモーダルポップアップを持っています。ユーザーがデータを送信した後、同じポップアップで結果を表示したいのですが。そのモーダルビューを再ロードするにはどうすればよいですか?ありがとう。Yii2でブートストラップモーダルポップアップをリロードする方法は?

popup view

これがポップアップ表示される:

<div class="site-popup"> 
    <h1><?= Html::encode($this->title) ?></h1> 

    <div class="row"> 
     <div class="col-lg-5"> 
      <?php $form = ActiveForm::begin(['id' => 'popup-form']); ?> 
       <?= $form->field($model, 'pattern')->textArea(['rows' => 1]) ?> 

       <div class="form-group"> 
        <?= Html::submitButton('Submit', ['class' => 'btn btn-primary', 'name' => 'popup-button']) ?> 
       </div> 

      <?php ActiveForm::end(); ?> 
     </div> 
</div> 

<?php 
    echo "<pre>"; 
    print_r($model->data); 
?> 

これは、上記のモーダルポップアップビューの呼び出し図である。

<p> 
    <?= Html::button('Search', ['value' =>Url::to('index.php?r=site/mypopup'),'class' =>'btn btn-success', 'id'=>'modalButton']) ?> 
</p> 
     <?php 
      Modal::begin([ 
      'header'=> '<h4>Search</h4>', 
      'id' => 'modal', 
      'size' => 'modal-lg', 
      ]); 

      echo "<div id='modalContent'></div>"; 

      Modal::end(); 
     ?> 

JSファイル:

$(function(){ 
    //get the click of the search button 
    $('#modalButton').click(function(){ 
     $('#modal').modal('show') 
      .find('#modalContent') 
      .load($(this).attr('value')); 
     }); 
}); 

コントローラ:

public function actionPopup() 
{ 

$model = new PopupForm(); 

    if ($model->load(Yii::$app->request->post()) && $model->validate()) 
    { 
     $model->insertPopup(); 
     return $this->renderAjax('mypopup', ['model' => $model]); 

      } else { 
       return $this->renderAjax('mypopup', [ 
        'model' => $model, 
       ]); 
      } 
} 
+0

submitの代わりにボタンを使用し、onclickのajaxを呼び出して、同じモーダルでビューを返します。 –

+0

あなたはどういう意味ですか?「同じモーダルのビューを返す」。ありがとう@Rajesh Pradhan –

+0

私は、保存するならばajaxを呼び出し、次にモーダルで応答を返します。 –

答えて

2

はあなたがPjaxでブロックをラップしようとしましたか?
Yii2はフォーム提出を処理し、コントローラの結果をモーダルポップアップで表示します。

<div class="site-popup"> 
    <h1><?= Html::encode($this->title) ?></h1> 

    <div class="row"> 
     <div class="col-lg-5"> 
      <?php Pjax::begin(['enablePushState' => false]); ?> 
       <?php $form = ActiveForm::begin(['id' => 'popup-form']); ?> 
       <?= $form->field($model, 'pattern')->textArea(['rows' => 1]) ?> 

       <div class="form-group"> 
        <?= Html::submitButton('Submit', ['class' => 'btn btn-primary', 'name' => 'popup-button']) ?> 
       </div> 

       <?php ActiveForm::end(); ?> 
      <?php Pjax::end(); ?> 
     </div> 
    </div> 
</div> 
+0

私は上記(PjaxでActiveForm全体をラップします)を試みましたが、データが送信された後にポップアップ表示が再ロードされません。それ以外は何が必要ですか?ありがとう。 –

0

ボタン上でクリックイベントを使用しています。 jsのclickイベントの代わりに、このようなsubmitイベントを呼び出す必要があります。

$(function(){ 

    //get the click of the search button 
    $('.site-popup form').submit(function(){ 
     $('#modal').modal('show') 
      .find('#modalContent') 
      .load($(this).attr('value')); 
     }); 
     return false 
}); 
+0

@Ramesh Mahajanの返信をありがとうが、ポップアップビューに上記のコードが表示されていない:(何がjsファイルで間違っている可能性がありますか?ありがとう。 –

関連する問題