A la base, le module utilise une table d'association :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
VitrineLivre:
  actAs: { Timestampable: ~ }
  columns:
    vitrine_paragraphe_id: { type: integer(4), primary: true }
    livre_id: { type: integer(4), primary: true }
  relations:
    Livre:
      type: one
      local: livre_id
      foreign: id
    VitrineParagraphe:
      type: one
      local: vitrine_paragraphe_id
      foreign: id
J'ai généré le module avec doctrive:generate-admin. J'insère un premier objet dans la base grâce au formulaire de création. Et lorsque je veux revenir sur la liste, j'obtiens une erreur Apache :
Internal Server Error (500) :
The "/vitrinelivre/:Array/edit.:sf_format" route has some missing mandatory parameters (:Array).
La route correspondant au module, générée par Doctrine est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
vitrine_livre:
  class: sfDoctrineRouteCollection
  options:
    model:                VitrineLivre
    module:               vitrinelivre
    prefix_path:          /vitrinelivre
    column:               Array
    with_wildcard_routes: true
Comme le champ 'colum' doit pointer sur une colonne servant d'identifiant unique, je comprends que cela ne puisse pas marcher tel quel. Je comprends moins que Doctrine génère une route qui ne marche pas, mais passons. La question est donc : comment dois-je configurer ma route pour qu'elle fonctionne avec un objet ayant une clé portant sur deux champs ?