Wenn ich Modul in Symfony erzeugen 1.4, erstellt es (zum Beispiel) ‚Neu‘ und ‚Erstellen‘ Methoden wie folgt aus:Symfony Generation
public function executeNew(sfWebRequest $request)
{
$this->form = new SomeForm();
}
public function executeCreate(sfWebRequest $request)
{
$this->forward404Unless($request->isMethod(sfRequest::POST));
$this->form = new SomeForm();
$form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
if ($form->isValid())
{
$res_object = $form->save();
$this->redirect('results_show', $res_object);
}
$this->setTemplate('new');
}
Mit --non-verbose-templates
es so etwas wie den Code generiert unten (ich es geändert um nur den Erzeugungsteil anzuzeigen):
public function executeNew(sfWebRequest $request)
{
$this->forward404Unless($request->isMethod(sfRequest::POST));
$this->form = new SomeForm();
if ($request->isMethod(sfRequest::POST)) {
$form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
if ($form->isValid())
{
$res_object = $form->save();
$this->redirect('results_show', $res_object);
}
}
}
Was ist der Grund für eine solche Standardgenerierung? Ich denke, dass diese Methode kompakter ist, weniger Routen und Aktionen hinzufügt und die URL für die erste und die nächste (wenn es Fehler gibt) Formularanzeige nicht ändert. Die Standardgenerierungsmethode sollte jedoch die beste oder die am häufigsten verwendbare Methode sein. Also, was wissen die Leute von Sensio Labs, aber ich nicht?
Aber es kann eine solche Situation geben. Vom Benutzer ausgefülltes Formular (some_form/new), aber einige Fehler gemacht (umgeleitet zu some_form/create). Er hatte keine Zeit mehr, diese Aufgabe zu erledigen, aber er wollte in Zukunft etwas ausfüllen (oder einfach das Formular auffüllen). Was macht der Benutzer in dieser Situation? Ja - markiert die Seite. Aber was wird er sehen, wenn er zurückkommt ?! 404! Weil er zu der Aktion zurückkehren wird, die nur mit der POST-Methode (some_form/create) funktioniert. Ich denke nicht, dass es gut ist. – kpower
neue und erstellen können die gleiche URL teilen und die Routen können nach Anfrage Typ unterschieden werden –
Natürlich, aber Sie sollten benutzerdefinierte Regeln selbst hinzufügen, um die korrekte Einrichtung zu machen, und dies wird nicht funktionieren "von der Box". Habe ich recht? – kpower