/ / Yii + Neuling: beim Einreichen von Ajax-generierten Formular mit Yii Framework stecken - Ajax, Formulare, yii

Yii + Neuling: bei der Einreichung von Ajax-generierten Formular mit Yii Framework stecken - Ajax, Formen, yii

Ich habe schöne erste Tage mit Yii, habe aber Probleme damit, Dinge zu bekommen, die ich "vom Finger" geschrieben habe.

Hier ist der Hintergrund für meine Frage:

Ich habe ein "Projekt" -Modell, Controller und Ansicht erstellt(funktioniert gut) und in den "views / project / _form.php" habe ich einen AJAX-Link platziert, der eine Teilansicht anzeigt: ein Formular, das zu einem anderen Modell mit dem Namen "Bild" gehört.

Also, die "views / project / _form.php" hat das im Inneren:

<?php

echo CHtml::ajaxLink("Add picture", array("projekt/addPicture"),
array("update"=>"#req_res")
);

?>

<div id="req_res">...</div> <!-- here the ajax form shows -->

Die Aktion / project / addPicture zeigt das Formular erfolgreich mit folgendem Code an:

public function actionAddPicture()
{

$model=new Picture;
$this->renderPartial("/projekt/_addPicture", array("model"=>$model));
Yii::app()->end();
}

und die Datei "_addPicture.php" im Ordner / projekt / view enthält eine "cactiveform", die das "$ model" korrekt lädt (ich kann meine Daten in der Datenbank usw. sehen)

Problem:

Wenn ich auf das neu erzeugte Formular "Speichern" drücke, schickt Yii mich zu einer neuen weißen Seite, die wieder dieses Formular enthält, anstatt es zu speichern. Hier ist die URL, die Yii mir schickt:

      http://localhost/projekt/addPicture?_=1304644637668

Ich bin mir vage bewusst, dass es etwas damit zu tun hat, dass ich Yii nicht sage, welchen Controller ich verwenden soll (?), Aber ich weiß nicht, wie ich den Controller festlegen soll (wenn das der Fall ist)

Kannst du mich hier in eine Richtung weisen? Vielen Dank

Antworten:

1 für die Antwort № 1

Durch die Verwendung von cactiveform definieren Sie eine Aktion als eine Option der cactiveform:

$form=$this->beginWidget("CActiveForm", array(
"action"=>Yii::app()->createUrl(...), ....

Normalerweise ist die Aktion mit der Schaltfläche "Speichern", die Sie im Formular sehen, verbunden.

When i hit "save" on the newly generated form,

btw: Ich denke, Ihr Ajax-Link wird nicht verwendet, wenn Sie auf "Speichern" klicken.

Ich sage Yii nicht, welchen Controller ich verwenden soll (?)

Schauen Sie sich die "action" -Option von cactiveform an

Yii schickt mich zu einer neuen weißen Seite, die dieses Formular erneut enthält, anstatt es zu speichern

Das ist richtig. Denn mit der Standardschaltfläche "Speichern" führt Yii die Aktion aus. Wenn die Aktion actionAddPicture ist, werden die Postes-Daten tatsächlich nicht verarbeitet.

Das bedeutet, dass Sie so etwas benötigen (nur ein einfaches Beispiel, das Sie an Ihre Bedürfnisse anpassen müssen):

if(isset($_POST[<model>]) )
{   $model=new model();
$model->attributes=$_POST[<model>];
$model->save;
[...]