Objet non passé à la fonction
Bonjour,
J'ai un template (page) qui affiche une liste de toutes les sortes de véhicule. A chaque sorte affichée, il est possible de la modifier ou de la supprimer. Lorsqu'on clique sur le bouton "Modifier", on est envoyé vers le formulaire de modification de la sorte.
Mon problème, c'est que mon objet "Sort" n'est pas reconnu dans la fonction du controller qui appelle le template de modification.
Voici le code de mon template affichant la liste des sortes :
Code:
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 26 27 28 29
| {% extends 'base.html.twig' %}
{% block title %} Types de véhicules existants {% endblock %}
{% block body %}
{% for sort in sorts %}
<section class="sorts">
<sort>
<div class="content">
{{sort.sort}}
</div>
<div>
<a href="{{ path('road_trip_editSort', { 'id' : sort.id }, {'test' : 'ok'} )}}" class="btn-btn-primary">Modifier</a>
</div>
<div>
<a href="{{ path('road_trip_deleteSort', { 'id' : sort.id } )}}" class="btn-btn-primary">Supprimer</a>
</div>
</sort>
</section>
{% endfor %}
<div>
<a href="{{ path('road_trip_createSort')}}" class="btn-btn-primary">Ajouter une sorte de véhicule</a>
</div>
{% endblock %} |
J'envoie l'id de mon objet "Sort"
Le code de la fonction du controller qui appelle le template de modification :
Code:
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 26
| /**
* @Route("/road_trip/newSort", name="road_trip_createSort")
* @Route("/road_trip/{id}/editSort", name="road_trip_editSort")
*
*/
public function sortForm(Sort $sort = null, Request $request, ObjectManager $manager){
if (!$sort) {
$sort = new Sort;
}
$form = $this->createForm(SortType::class, $sort);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$manager->persist($sort);
$manager->flush();
return $this->redirectToRoute('road_trip_sorts');
}
return $this->render('road_trip/createSort.html.twig', ['formSort' => $form->createView(), 'editMode' => $sort->getId() !== null]);
} |
Elle reçoit l'id et devrait comprendre qu'il s'agit d'un objet "Sort", comme lu dans un tutoriel. Cependant, ce n'est pas le cas car "editMode" est à null. Donc, dans le template suivant, c'est l'option "Création" et non "Modification" qui est affichée :
Code:
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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| {% extends "base.html.twig" %}
{% form_theme formSort 'bootstrap_4_layout.html.twig' %}
{% block body %}
{% if editMode %}
<h1>Modification d'une sorte de véhicule</h1>
{% else %}
<h1>Création d'une sorte de véhicule</h1>
{% endif %}
{{ form_start(formSort) }}
{{ form_errors(formSort) }}
<div>
{{ form_label(formSort.sort, 'Sorte', {'label_attr': {'class': 'foo'}}) }}
{{ form_errors(formSort.sort) }}
{{ form_widget(formSort.sort) }}
</div>
<button type="submit" class="btn btn-success">
{% if editMode %}
Enregistrer les modifications
{% else %}
Ajouter la sorte
{% endif %}
</button>
{{ form_end(formSort) }}
{% endblock body %} |
Je n'y comprends rien. Quelqu'un a une idée?
Merci d'avance!