Yii2 Form im Modal-Fenster
Ich würde gerne die Grundlagen verstehen lernen, wie die Arbeit mit form von Modal-Fenster, in Yii2? Das ist mein derzeitiges Verständnis, und ich werde dankbar, wenn jemand kann mir erklären was ich verpasst habe.
Also, ich habe eine ListView mit Schallplatten. Jeder Datensatz enthält eine Schaltfläche. Die Schaltfläche öffnet ein Modal, mit einer Form, innen:
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();
In Form 'action' schrieb ich vote/Stimme und die Methode post. Also ich erwarte, dass post-Daten innerhalb actionVote Funktion meines VoteController.
public function actionVote()
{
if (Yii::$app->request->post()) {
$id = Yii::$app->request->post('search');
Yii::$app->session->setFlash('error', $id);
return true;
}
}
Für die Vorlage, die ich verwenden 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;
}
Aber nach klicken auf " Submit form sehe ich zwei Warnungen. Modal ist auch nicht versteckt. Flash-SMS ist auch nicht zeigte.
Was mache ich falsch? Kann mir jemand deutlich erklären, ein Schritt-für-Schritt-Verfahren der Datenfluss? Jetzt für mein Verständnis ist:
- Modal Öffnen;
- Klicken Sie auf Formular Absenden innerhalb Modal;
- Laden der Daten per ajax-controller-action;
- fangen Daten aus post-und execute-controller-action-code;
Was habe ich verpasst?
- Sie haben die gleichen Benachrichtigungen doppelt ? . Haben Sie überprüfen Sie Ihre Browser-Konsole, um zu sehen, ob ein post request gemacht wurde ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie Folgen Sie einfach den unten Schritt...
Schritt 1: definieren Sie Ihre link-button wie
Schritt 2: definieren Sie Ihre popup-Fenster(remote-url)
Schritt 3: definieren Sie Ihre remote-url-Aktion in Ihren controller wie
Schritt 4: definieren Sie Ihre view-Datei _add_comment
damit...:)
Sehe ich ein paar Probleme, die erste, die Sie verwenden auf submit-Ereignis, so dass yii feuert einmal auf die Veranstaltung und dem browser ein zweites mal (das ist der Grund, die Warnung zeigt zweimal), sollten Sie die beforeSubmit Veranstaltung. Zweitens, wird die Meldung nicht angezeigt wird, weil Sie nicht gerendert wird es wieder, Ihr einfach in Ihre controller. Zum schließen des modalen Sie sollten den code ändern, um
Einen nützlichen link ist diese
Hier die Lösung Yii2 Render ein Formular in einem Modal Popup mit ajax
SCHRITT 1 : SCHALTFLÄCHE ZUM ÖFFNEN MODELL
SCHRITT 2 : JAVASCRIPT -
SCHRITT 3 : HTML-MODELL :
SCHRITT 4 : CONTROLLER
SCHRITT 5 : VIEW-DATEI