Bonjour,
Je suis confronté à un problème lié à des formulaires imbriqués.
Après multiples approches, j'ai décidé d'utiliser le plugin ahDoctrineEasyEmbeddedRelations pour faciliter la gestion de ces derniers.
Description de la situation: j'ai un formulaire Resources auquel je veux intégrer un formulaire ResourceDescriptions. Je désire ainsi pouvoir, à la création d'une nouvelle resource, associer à cette ressource, directement, la description fournie par l'utilisateur. Malheureusement, je n'y parviens pas et je ne vois pas ce que je ne fais pas bien dans mon implémentation.
Voici quelques informations de base qui vous permettront, je l'espère, de m'aider.
1) Schéma simplifié:
2) ResourcesForm
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 ResourceDescriptions: connection: doctrine tableName: resource_descriptions columns: id: type: integer(4) fixed: false unsigned: true primary: true autoincrement: false description: type: string() fixed: false unsigned: false primary: false notnull: true autoincrement: false lang_id: type: string(2) fixed: true unsigned: false primary: true autoincrement: false desc_type: type: integer(1) fixed: false unsigned: true primary: true autoincrement: false relations: Resources: local: id foreign: id type: one Resources: connection: doctrine tableName: resources columns: id: type: integer(4) fixed: false unsigned: true primary: true autoincrement: false relations: ResourceDescriptions: local: id foreign: id type: many
3) ResourceDescriptionsForm
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 $this->embedRelations(array( 'ResourceDescriptions' => array( 'considerNewFormEmptyFields' => array('id', 'description', 'lang_id', 'desc_type'), 'newFormLabel' => 'New Description', 'displayEmptyRelations' => True, 'customEmbeddedFormLabelMethod' => 'Description', 'formClassArgs' => array(array('ah_add_delete_checkbox' => true)), ) ));
Alors, pour être plus précis, de deux choses l'une:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public function configure(){ /*Aucun changement*/ }
a) Je ne comprends pas pourquoi seul le champ description est affiché dans mon formulaire (les champs lang_id et desc_type n'apparaissent pas...)
b) A la soumission du formulaire pour la création d'une nouvelle instance de Resources, le debug m'apprend que l'id pour la description est NULL (SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'id' cannot be null).
Pourriez-vous m'éclairer sur ce problème?
Merci d'avance!
Partager