Commits (3)
...@@ -151,7 +151,9 @@ public function show(EtablissementRepository $etablissementRepository, Commentai ...@@ -151,7 +151,9 @@ public function show(EtablissementRepository $etablissementRepository, Commentai
$form = $this->createForm(EtablissementType::class, $etablissement); $form = $this->createForm(EtablissementType::class, $etablissement);
$form->handleRequest($request); $form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) { if ($form->isSubmitted() && $form->isValid()) {
$entityManager->flush(); $entityManager->flush();
return $this->redirectToRoute('app_etablissements'); // Redirection vers la liste des établissements return $this->redirectToRoute('app_etablissements'); // Redirection vers la liste des établissements
......
...@@ -25,7 +25,8 @@ class Etablissement ...@@ -25,7 +25,8 @@ class Etablissement
#[ORM\Column(type: "string", length: 255, nullable: true)] #[ORM\Column(type: "string", length: 255, nullable: true)]
private ?string $nature = null; private ?string $nature = null;
#[Assert\Choice(choices: ["PRIVE", "PUBLIC"])] #[Assert\NotNull(message: 'Le rôle est requis.')]
#[Assert\Type(type: Secteur::class, message: 'Le rôle doit être une instance de Secteur.')]
#[ORM\Column(enumType: Secteur::class)] #[ORM\Column(enumType: Secteur::class)]
private ?Secteur $secteur = null; private ?Secteur $secteur = null;
......
<?php <?php
namespace App\Enum; namespace App\Enum;
enum Secteur: string { enum Secteur: string
{
case PRIVE = 'PRIVE'; case PRIVE = 'PRIVE';
case PUBLIC = 'PUBLIC'; case PUBLIC = 'PUBLIC';
}
\ No newline at end of file public static function getValues(): array
{
return array_column(self::cases(), 'value');
}
}
...@@ -17,8 +17,10 @@ class EtablissementType extends AbstractType ...@@ -17,8 +17,10 @@ class EtablissementType extends AbstractType
->add('nom') ->add('nom')
->add('nature') ->add('nature')
->add('secteur', ChoiceType::class, [ ->add('secteur', ChoiceType::class, [
'choices' => Secteur::cases(), // Récupère toutes les valeurs de l'Enum 'choices' => array_combine(Secteur::getValues(), Secteur::cases()), // Associe les labels aux cases
'choice_label' => fn ($choice) => $choice->value, // Assure l'affichage sous forme de texte 'choice_label' => fn($choice) => $choice->value, // Afficher la valeur correcte
'expanded' => false, // Liste déroulante
'multiple' => false, // Un seul choix possible
]) ])
->add('longitude') ->add('longitude')
->add('latitude') ->add('latitude')
...@@ -43,6 +45,9 @@ class EtablissementType extends AbstractType ...@@ -43,6 +45,9 @@ class EtablissementType extends AbstractType
{ {
$resolver->setDefaults([ $resolver->setDefaults([
'data_class' => Etablissement::class, 'data_class' => Etablissement::class,
'csrf_protection' => true, // Assure que la protection CSRF est activée
'csrf_field_name' => '_token',
'csrf_token_id' => 'etablissement_item',
]); ]);
} }
} }
{% extends 'base.html.twig' %} {% extends 'base.html.twig' %}
{% block body %} {% block body %}
<h1>Modifier un etablissement</h1> <h1>Modifier un établissement</h1>
{{ form_start(form) }} {{ form_start(form) }}
<input type="hidden" name="_method" value="PUT"> {# Indique à Symfony d'interpréter la requête comme un PUT #}
{{ form_widget(form) }} {{ form_widget(form) }}
<button type="submit" class="btn btn-primary">Modifier</button> <button type="submit" class="btn btn-primary">Modifier</button>
{{ form_end(form) }} {{ form_end(form) }}
<a href="{{ path('etablissement_edit', {'id': id}) }}" class="btn btn-secondary">Annuler</a> <a href="{{ path('app_etablissements') }}" class="btn btn-secondary">Annuler</a>
{% endblock %} {% endblock %}