2010-07-17 10 views
5

Dans mon application Cake j'ai un contrôleur "completed_projects". Son action d'index ne prend aucun argument et liste certains projets. Différentes pages sont accessibles par example.com/completed_projects/index/page:23 etc.Configuration des routes pour les arguments nommés dans CakePHP

Je veux faire la cette URL comme:

example.com/portfolio/page23 

Il est évident que je dois faire quelques itinéraires pour cela. J'ai essayé beaucoup d'entre eux aiment:

Router::connect('/portfolio/page:num', array('controller' => 'completed_projects', 'action' => 'index'), array('pass'=>'page:num', 'num'=>'[0-9]+')); 

et aussi:

Router::connect('/portfolio/:page:num', array('controller' => 'completed_projects', 'action' => 'index'), array('named'=>'num', 'page'=>'page', 'num'=>'[0-9]+')); 

J'ai aussi essayé de les modifier encore et encore, mais aucun d'entre eux fonctionne bien. Je utilise CakePHP 1.3. Toute aide serait appréciée.

Répondre

1
Router::connect('/portfolio/page:page_num', 
    array('controller'=>'completed_projects', 'action'=>'index'), 
    array('page_num'=>'[\d]+') 
); 

Dans votre contrôleur, page_num d'accès avec:

$this->params['page_num']; 
+0

Ce passe page_num (comme 23) à l'action, mais je veux qu'un paramètre nommé seront utilisés comme la page: 2 est passé. Merci de penser à aider de toute façon. –

+0

Désolé, mis à jour la réponse pour répondre à vos besoins, je l'espère :) – Oscar

+0

Merci encore Oscar. Pourriez-vous expliquer comment cette variable (ou n'importe quelle variable) peut être utilisée pour la pagination? Obtenir seulement une variable passée dans le contrôleur n'est pas obligatoire. Je veux qu'il soit nommé argument (comme page: 33) afin qu'il puisse être utilisé pour la pagination. Est-ce même possible? –