En fait, je suis certaine que le problème se situe au niveau du form->isValid().
Si je passe la souris sur un lien, on est ok: je dois avoir la route et le paramètre passé.
Ben si je passe ma souris sur le bouton "supprimer", je n'ai ni route ni paramètre. J'ai juste... rien lol.
Du coup, j'ai fa ça:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
public function deleteAction(Request $request, $id)
{
$form = $this->createDeleteForm($id);
$form->submit($request);
if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
$entity = $em->getRepository('SiteFrontBundle:Comment')->find($id);
if (!$entity) {
throw $this->createNotFoundException('Unable to find Comment entity.');
}
$em->remove($entity);
$em->flush();
}
else{
var_dump($form->getErrorsAsString());
exit;
}
return $this->redirect($this->generateUrl('admin_comment'));
} |
et j'ai ceci:
string 'ERROR: Le jeton CSRF est invalide. Veuillez renvoyer le formulaire.
' (length=68)
D'ailleurs, si je fais:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
public function deleteAction(Request $request, $id)
{
$form = $this->createDeleteForm($id);
$form->submit($request);
$em = $this->getDoctrine()->getManager();
$entity = $em->getRepository('SiteFrontBundle:Comment')->find($id);
if (!$entity) {
throw $this->createNotFoundException('Unable to find Comment entity.');
}
$em->remove($entity);
$em->flush();
return $this->redirect($this->generateUrl('admin_comment'));
} |
Tout fonctionne. Sauf que question sécurité c'est pas top.. Et je ne peux pas me permettre cela sur un travail de fin d'étude.
Donc j'ai fait des recherches, j'ai capté qu'il faudrait ajouter le champ CSRF, dans la doc ils en parlent: http://symfony.com/fr/doc/current/co...arameters.html
Mais si j'ajoute le CSRF via , j'ai une erreur Variable "form" does not exist
Pareil si je fait
{{ form_widget(delete_form) }}
Idem si j'ajoute jeton "à la main" en faisant
<input type="hidden" name="_csrf_token" value="{{ csrf_token('authenticate') }}">
Partager