Я хотел бы понять основы работы с формой из модального окна в Yii2? Это мое настоящее понимание, и я буду признателен, если кто-нибудь сможет объяснить мне, что я пропустил. Итак, у меня есть ListView с записями. Каждая запись содержит кнопку. Кнопка открывает модаль с формой внутри:Форма Yii2 в модальном окне
echo Html::a('<span class="glyphicon glyphicon-bell" aria-hidden="true"></span>', ['#'],[
'id' => $model->id,
'class' => 'linkbutton',
'data-toggle'=>'modal',
'data-tooltip'=>'true',
'data-target'=>'#submit_vote'.$model->id,
'title'=> 'Assign'
]);
Modal::begin([
'size' => 'modal-lg',
'options' => [
'id' => 'submit_vote'.$model->id,
],
'header' => '<h2>Create Vote</h2>',
'footer' => 'Footer'
]);
ActiveForm::begin([
'action' => 'vote/vote',
'method' => 'post',
'id' => 'form'.$model->id
]);
echo Html::input(
'type: text',
'search',
'',
[
'placeholder' => 'Search...',
'class' => 'form-control'
]
);
echo Html::submitButton(
'<span class="glyphicon glyphicon-search"></span>',
[
'class' => 'btn btn-success',
]
);
ActiveForm::End();
Modal::end();
В форме «action» я написал сообщение о голосовании и голосовании. Поэтому я ожидаю, что данные post внутри функции actionVote моего VoteController.
public function actionVote()
{
if (Yii::$app->request->post()) {
$id = Yii::$app->request->post('search');
Yii::$app->session->setFlash('error', $id);
return true;
}
}
Для подачи я использую Ajax:
$('form').on('submit', function() {
alert($(this).attr('id')+$(this).attr('action')+$(this).serialize()); //just to see what data is coming to js
if($(this).attr('id') !== 'searchForm') { //some check
$.ajax({
url: $(this).attr('action'),
type: 'post',
data: $(this).serialize(),
success: function(){
$("#submit_vote15").modal('hide'); //hide popup
},
});
return false;
}
Но после щелчка на Submit формы я вижу два предупреждения. Модальные тоже не скрыты. Сообщение Flash также не отображается. Что я делаю неправильно? Может ли кто-нибудь четко объяснить пошаговую процедуру потока данных? На данный момент у меня такое понимание:
- Open Modal;
- Нажмите Форма отправки внутри Modal;
- Загрузить данные через ajax в действие контроллера;
- улавливать данные из сообщения и выполнять код действия контроллера; Что я пропустил?
Вы же оповещения дважды ? , Вы проверили консоль браузеров, чтобы узнать, был ли сделан запрос на почту? –