Как закрыть бустрап Dialog в yii2? - PullRequest
0 голосов
/ 30 ноября 2018

Я пытаюсь сделать это:

  1. Открыть диалог начальной загрузки с помощью кнопки через URL-адрес.Действие URL-адреса в контроллере: "myController/updateDialog".

  2. В открытом диалоговом окне загружается страница (myController/updateDialog) с формой для заполнения данных (форма имеет кнопку для отправки).

  3. Если я отправлю форму, нажав кнопку, в моем контроллере я попытался закрыть диалоговое окно и обновить некоторые вещи на исходной странице, что я делаю с JS.Но это не работает.Я всегда получаю окно навигатора в пустую с новым URL;Я ожидаю сохранить исходную страницу, на которой был вызван диалог, чтобы увидеть изменения, так же, как это делает CJUIDIALOG в Yii 1.x.

Код контроллера:

public function actionUpdatedialog($id)
{ 
   $model = $this->findModel($id);
    if ($model->load(Yii::$app->request->post() &&  $model->save() )) {           
       $this->view->registerJs("window.close(); window.opener.fn.yiiGridView.update('books-heads'); return false;",
            $this->view::POS_HEAD);//try close and finally 
     die(); //finally 

    } 
    return $this->render('update', [
        'model' => $model,
    ]);
}

Я пытался:

"window.close();" и

"$(#Mymodal).modal('hide');"и другие, но не смог разобраться.

1 Ответ

0 голосов
/ 01 декабря 2018

Вы должны отправить свою форму через ajax, принять и определить возвращаемое значение.Если все прошло успешно, позвоните $("#your modal box").modal('hide'), чтобы закрыть диалог.Например:

public function actionUpdatedialog($id)
{ 
   $model = $this->findModel($id);
    if ($model->load(Yii::$app->request->post() &&  $model->save() )) {           
       \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
       return ['code' => 200, 'message' => 'success'];

    } 
    return $this->render('update', [
        'model' => $model,
    ]);
}

На странице:

$("#formName").on('submit', function () {
    // or use ajax
    fetch(...).then(response => {
        response.json().then(json => {
            if (200 === json.code) {
                $("yourModalBox").modal('hide');
            } else {
                alert(json.message);
            }
        });
    });
});

Ответ на перевод из Google Translate, надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...