Symfony Lorsque je produis module symfony 1.4, il crée (par exemple) « Nouveau » et « Créer » méthodes comme celle-ci:génération
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');
}
Avec --non-verbose-templates
il génère quelque chose comme le code ci-dessous (je l'ai modifié pour afficher uniquement la partie création):
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);
}
}
}
Quelle est la raison d'une telle génération par défaut? Je pense que la méthode ci-dessous est plus compacte, ajoute des routes et des actions moindres et ne change pas l'URL pour le premier et le prochain affichage (s'il y avait des erreurs). Mais la méthode de génération par défaut devrait être la meilleure ou la plus souvent utilisable. Alors, que savent les gars de Sensio Labs, mais pas moi?
Mais il peut y avoir une telle situation. L'utilisateur a rempli le formulaire (some_form/new), mais a fait quelques erreurs (redirigé vers un_form/create). Il n'avait plus le temps de terminer cette tâche, mais il voulait finir de la remplir à l'avenir (ou simplement remplir le formulaire). Que fait l'utilisateur dans cette situation? Oui - marque les signets de la page. Mais que va-t-il voir, quand il reviendra ?! 404! Parce qu'il retournera à l'action qui fonctionne uniquement avec la méthode POST (some_form/create). Je ne pense pas que ce soit bon. – kpower
nouveau et créer peut partager la même URL et les routes peuvent être différenciées par type de demande –
Bien sûr, mais vous devez ajouter des règles personnalisées pour faire la configuration correcte et cela ne fonctionnera pas "de la boîte". Ai-je raison? – kpower