2010-11-02 5 views
1

J'ai la configuration routes.php suivanteCakePHP config routeur de connexion(), paramètre personnalisé analyse

Router::connect('/:type/:slug;:id', array(
     'controller' => 'content', 
     'action' => 'show', 
     'type' => null, 
     'slug' => null, 
     'id' => null, 
    ), 
    array(
     'type' => '(articles|releases|answers|videos)', 
     'slug' => '[a-zA-Z0-9\-]+', 
     'id' => '[0-9]+', 
     'pass' => array('type', 'slug', 'id'), 
    )); 

et je suis en train d'analyser l'adresse suivante:

/answers/effective-language-therapy-for-people;368 

Et le routeur me conduit à l'action correcte du contrôleur &, mais le dumping $this->params me montre qu'il n'est pas d'identifier correctement le $id et le $slug

Array 
(
    [type] => answers 
    [slug] => answers 
    [id] => effective-language-therapy-for-people 
    [named] => Array 
     (
     ) 

    [pass] => Array 
     (
      [0] => answers 
      [1] => answers 
      [2] => effective-language-therapy-for-people 
     ) 

    [controller] => content 
    [action] => show 
    [plugin] => 
    [url] => Array 
     (
      [ext] => html 
      [url] => answers/effective-language-therapy-for-people;368 
     ) 

    [form] => Array 
     (
     ) 
) 

Alors - ce qui donne? Mon regex est-il faux, approche-t-il qu'il manque quelque chose, ou quoi? Des idées?

Note: J'ai lu:


UPDATE, résolu et version de travail

Router::connect('/:type/:slug:splitter:id', array('controller' => 'content', 'action' => 'view',), array(
    'type' => 'articles|releases|answers|videos', 
    'slug' => '[a-zA-Z0-9\-]+', 
    'splitter' => '[\;\-\|]+', 
    'id' => '[0-9]+', 
    )); 
+0

Je n'aime pas l'aspect du point-virgule entre le slug et le nombre. – Leo

+0

compris, cela pourrait être un tiret ou n'importe quoi d'autre pour tout le monde, mais je réduisais le nombre de problèmes possibles pour ce test. – zeroasterisk

Répondre

7

Essayez:

Router::connect('/:type/:slug;:id', array(
    'controller' => 'content', 
    'action' => 'show', 
    'type' => null, 
    'slug' => null, 
    'id' => null, 
), 
array(
    'type' => 'articles|releases|answers|videos', 
    'slug' => '[a-zA-Z0-9\-]+', 
    'id' => '[0-9]+', 
    'pass' => array('type', 'slug', 'id'), 
)); 

Le problème était entre parenthèses types () qui ne sont pas pris en charge dans CakePHP.

+0

Ça a été changé le code en: \t Router :: connect ('/: type /: slug: séparateur: id', array ('controller' => 'content', 'action' => 'view' ,), tableau ( \t \t 'type' => 'articles | presse | réponses | vidéos', \t \t 'slug' => '[a-zA-Z0-9 \ -] +', \t \t ' séparateur '=>' [\; \ - \ |] + ', \t \t' id '=>' [0-9] + ', \t \t)); – zeroasterisk

Questions connexes