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();
フォームでは、私は投票/投票とメソッド投稿を書いています。だから、私はVoteControllerのactionVote関数の中に投稿データがあると思います。
$('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;
}
しかし、送信フォーム上のクリックした後、私は2回の警告を参照してください。私はAJAXを使用して送信するため
public function actionVote()
{
if (Yii::$app->request->post()) {
$id = Yii::$app->request->post('search');
Yii::$app->session->setFlash('error', $id);
return true;
}
}
。モーダルも隠されていない。フラッシュメッセージも表示されません。 私は間違っていますか?誰もが明確にデータフローのステップ手順を説明できますか?今のところ私の理解は:
- Open Modal;
- をクリックします。
- ajaxを介してコントローラアクションにデータをロードします。
- 投稿のデータをキャッチしてコントローラアクションコードを実行します。 私が逃したものは?
をあなたは同じアラートを持っています二度? 。ポストリクエストが行われたかどうかをブラウザーコンソールで確認しましたか? –