Formulaire Symfony2 Collection
Bonjour,
Je sais que des questions similaires ont déjà été posé mais je n'ai pas trouvé de réponse.
Ma structure :
Une classe qui contient des horaires :
Code:
1 2 3 4 5 6 7 8
|
class Personne
{
/**
* @ORM\ManyToMany(targetEntity="Horaire", cascade={"persist"})
*/
protected $horaires;
} |
Classe horaire :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
class Horaire
{
/**
* @ORM\Column(type="integer")
*/
private $jourSemaine;
/**
* @ORM\Column(type="time", nullable="true")
*/
private $ouverture;
/**
* @ORM\Column(type="time", nullable="true")
*/
private $fermeture;
} |
Avec les formulaires appropriés :
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
|
class PersonneForm extends AbstractType
{
public function buildForm(FormBuilder $builder, array $options)
{
$builder->add('horaires', 'collection', array('type' => new HoraireForm(),
'prototype' => false,
'allow_add' => false));
}
}
class HoraireForm extends AbstractType
{
public function buildForm(FormBuilder $builder, array $options)
{
$builder->add('jourSemaine', 'hidden');
$builder->add('ouverture', 'time', array('widget' => 'single_text',
'input' => 'string',
'required' => false));
$builder->add('fermeture', 'time', array('widget' => 'single_text',
'input' => 'string',
'required' => false));
}
} |
Jusqu'ici rien de compliquer.
Lors de l'instanciation du formulaire, la classe Personne contient un array de 14 Horaire (pour faire les jours de le semaine).
Le formulaire est bien instancié.
Le problème arrive au moment de la validation du formulaire : "This form should not contain extra fields".
Le bind du formulaire :
Code:
1 2 3 4 5 6 7
|
$request = Request::createFromGlobals();
$personne = new Personne();
$form = $this->get('form.factory')->create(new PersonneForm(), $personne);
$form->bindRequest($request);
if($form->isValid())
... |
Le problème vient du champs horaires, si je le retire le formulaire est bien validé, sinon il n'est pas validé.
Pour l'affichage du formulaire j'utilise twig et j'affiche horaire avec form_widget.
J'ai essaye de ne laisser que la propriété jourSemaine dans le formulaire des horaires, cela ne change rien.
J'ai fais un var_dump de $_GET pour vérifier les informations passé, il y a bien mes 14 Horaire dans un array 'horaires'.
Si vous avez une idée du problème ?
Merci d'avance.
Retourner à la vue un résultat trié
Bonjour, je veux retourner à ma vue un résultat trié par date voilà mon code dans le contrôleur :
Code:
1 2 3 4 5 6 7 8 9 10
| public function indexAction()
{
$em = $this->getDoctrine()->getManager();
$entities = $em->getRepository('TrituxGrhBundle:CV')->findAll();
return array(
'entities' => $entities
);
} |