Formulaire complex & validation
Bonjour à tous, j'aurais besoin d'aide concernant la création d'un formulaire un peu complex et sa validation.
J'ai une entité A ayant pour propriété, une entité B et une collection d'entité C, codé en gros tel quel (je ne met que les propriété les getters et setters sont ok):
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 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
|
class A {
/**
* @var integer $id
*
* @ORM\Column(type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var string $label
*
* @ORM\Column(type="string", length=100, nullable=false)
* @Assert\NotBlank()
* @Assert\MaxLength(100)
*/
private $label;
/**
* @var B $B
*
* @ORM\ManyToOne(targetEntity="B", fetch="EAGER")
* @ORM\JoinColumn(name="b_id", referencedColumnName="id", nullable=false)
*/
private $B;
/**
* @var ArrayColelction $collectionC
*
* @ORM\OneToMany(targetEntity="C", mappedBy="A", cascade={"persist"}, orphanRemoval=true)
*/
private $collectionC;
}
class B {
const TYPE1 = 1;
const TYPE2 = 2;
const TYPE3 = 3;
/**
* @var integer $id
*
* @ORM\Column(type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var string $label
*
* @ORM\Column(type="string", length=100, nullable=false)
* @Assert\NotBlank()
* @Assert\MaxLength(100)
*/
private $label;
}
class C {
/**
* @var integer $id
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var string $field1
*
* @ORM\Column(type="integer", length=100, nullable=false)
*/
private $field1;
/**
* @var string $field2
*
* @ORM\Column(type="integer", length=100, nullable=false)
*/
private $field2;
/**
* @var string $field3
*
* @ORM\Column(type="integer", length=100, nullable=false)
*/
private $field3;
} |
Le but étant le suivant, créer un formulaire de l'entité A et selon la valeur de B, ne rendre obligatoire ET n'afficher que certains champs de C.
Par exemple;
- si B vaut const::TYPE1, n'afficher et ne valider que field1 de C
- si B vaut const::TYPE2, n'afficher et ne valider que field1 et field 2 de C
- si B vaut const::TYPE3, n'afficher et ne valider que field3 de C
J'ai déjà créer les différents formulaires, mais je ne sais pas vraiment comment caché les champs via Twig mise à part en utilisant de la css avec style="display:none", est ce qu'il y aurait une meilleur solution ? Et comment faire pour ne valider que les champs nécessaires ?
Pour la validation, j'ai bien trouver le lien concernant "Groups based on Submitted Data" mais cela ne semble pas marcher pour une collection d'entité dans un form.
Si vous aviez quelques suggestions / pistes à me fournir, ce serait top.
Merci par avance.