Commits (3)
......@@ -151,7 +151,9 @@ public function show(EtablissementRepository $etablissementRepository, Commentai
$form = $this->createForm(EtablissementType::class, $etablissement);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$entityManager->flush();
return $this->redirectToRoute('app_etablissements'); // Redirection vers la liste des établissements
......
......@@ -25,7 +25,8 @@ class Etablissement
#[ORM\Column(type: "string", length: 255, nullable: true)]
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)]
private ?Secteur $secteur = null;
......
<?php
namespace App\Enum;
enum Secteur: string {
enum Secteur: string
{
case PRIVE = 'PRIVE';
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
->add('nom')
->add('nature')
->add('secteur', ChoiceType::class, [
'choices' => Secteur::cases(), // Récupère toutes les valeurs de l'Enum
'choice_label' => fn ($choice) => $choice->value, // Assure l'affichage sous forme de texte
'choices' => array_combine(Secteur::getValues(), Secteur::cases()), // Associe les labels aux cases
'choice_label' => fn($choice) => $choice->value, // Afficher la valeur correcte
'expanded' => false, // Liste déroulante
'multiple' => false, // Un seul choix possible
])
->add('longitude')
->add('latitude')
......@@ -43,6 +45,9 @@ class EtablissementType extends AbstractType
{
$resolver->setDefaults([
'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' %}
{% block body %}
<h1>Modifier un etablissement</h1>
<h1>Modifier un établissement</h1>
{{ form_start(form) }}
<input type="hidden" name="_method" value="PUT"> {# Indique à Symfony d'interpréter la requête comme un PUT #}
{{ form_widget(form) }}
<button type="submit" class="btn btn-primary">Modifier</button>
{{ 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 %}