ich möchte den in einem Formular angezeigten Datensatz kopieren. Also alle Werte bis auf den Primärschlüssel sollen im neuen DS gleich wie im alten sein und der kopierte DS soll im Formular auch gleich angezeigt werden, damit ihn der Benutzer manuell ändern kann.
Ich nehme an, dass man das elegant mit Yii erledigen kann. Hilft mir jemand auf die Sprünge?
Ich glaube, ich würde es auch so machen. Nur, dass man das vielleicht ins Model legen könnte. Der Controller soll ja schlank bleiben. Außerdem würde ich noch einen else-Zweig anlegen.
In den Else Zweig sollte wahrscheinlich eine Error Meldung:
if($modelNew->save()) $this->redirect(array('update','id'=>Yii::app()->db->getLastInsertId()));
else throw new CException('Datensatz konnte nicht kopiert werden.');
Sinnvoll wäre vielleicht auch eine Meldung, wenn der DS erfolgreich kopiert worden ist.
Das einzige, woran man erkennt, dass der DS kopiert wurde, ist die neue Id (die im Formular angezeigt wird). Es kann also sein, dass der User das nicht bemerkt und glaubt, es ist nichts geschehen und noch einmal auf "kopieren" klickt …
Danke für diese Anregung. So habe ich es jetzt gemacht:
if($modelNew->save()) {
Yii::app()->user->setFlash('success',"Ein neuer Datensatz wurde gespeichert und kann hier bearbeitet werden.");
$this->redirect(array('update','id'=>Yii::app()->db->getLastInsertId()));
} else Yii::app()->user->setFlash('success',"Der Datensatz konnte nicht kopiert werden.");