Bonsoir,
J'ai un système "classique" d'éléments rangés dans des catégories :
shema.yml
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
PageTCategory:
  columns:
    name: { type: string(255), notnull: true, unique: true }
    description: { type: string(255) }
  actAs:
    Sluggable:
      unique: true
      fields: [name]
      canUpdate: true
 
PageT:
  inheritance:
    type:          concrete
    extends:       Page
  columns:
    category_id:  { type: integer, notnull: true }
  relations:
    PageTCategory: 
      onDelete: CASCADE
      local: category_id
      foreign: id
      foreignAlias: PageTx
Et dans mon système de routing, j'utilise le name de la catégorie (": PageTCategory") pour afficher un élément :
routing.yml
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
t_show:
  url:   /tut/:PageTCategory/:slug
  class: sfDoctrineRoute
  options: { model: PageT, type: object }
  param: { module: tut, action: show }
 
tuto_index:
  url:   /tut
  param: { module: tut, action: index }
Mon problème vient du fait que je peux avoir n'importe quoi dans mon url dans ": PageTCategory", tant que le :slug est correcte, ca passe.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
/tut/bonneCategorie/bonSlug :        OK
/tut/mauvaiseCategorie/bonSlug :     OK (mauvais fonctionnement !)
/tut/bonneCategorie/mauvaisSlug :    erreur404
/tut/mauvaiseCategorie/mauvaisSlug : erreur404
Quelqu'un saurait comment je pourrais contourner le problème sans avoir à vérifier l'url moi-même dans mon action ?


PS: Si cela est utile, voici le code pour l'action show :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
public function executeShow(sfWebRequest $request)
  {
    $this->page_t = $this->getRoute()->getObject();
  }