Question

J'ai une méthode dans mon contrôleur d'utilisateurs similaires à:

function members($type = null, $category = null) { ... }

Les deux params sont optionnels et peuvent être utilisés ensemble ou sur leur propre.

Donc, avec l'itinéraire suivant.

Router::connect('/members/*', array('controller' => 'users', 'action' => 'members'));

http://example.com/users/members devient avec succès http://example.com/members.

Malheureusement, les éléments suivants ne fonctionnent pas

http://example.com/members/type:cat
http://example.com/members/category:dog
http://example.com/members/type:cat/category:dog

comment pourrais-je mettre en place mes itinéraires afin qu'ils fonctionnent toutes correctement?

Était-ce utile?

La solution

Les paramètres nommés ne sont pas automagiquement mis en correspondance avec l'action. Vous pouvez les obtenir en appelant

  

$ this-> passedArgs [ 'type'] ou $ this-> passedArgs [ 'catégorie']

ou en utilisant le 3ème paramètre du routeur :: connect:

Router::connect(
    '/members/*',
    array('controller' => 'users', 'action' => 'members'),
    array(
        'pass' => array('type', 'category')
    )
);

http://book.cakephp.org/view/46/Routes-Configuration

Autres conseils

Essayez avec

Router::connect('/members/type\:(.*)', array('controller' => 'users', 'action' => 'members_type'));
Router::connect('/members/category\:(.*)', array('controller' => 'users', 'action' => 'members_category'));
Router::connect('/members/type\:(.*)/category:(.*)', array('controller' => 'users', 'action' => 'members_type'));

Notez que je ne l'ai pas testé, mais je pense que vous devez échapper au côlon.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top