2010-10-12 4 views
0

J'ai un module d'utilisateur et peu d'actions comme le mur, la vaisselle, les restaurants, les photos.CakePHP Routing assistance

Je veux mettre en place un routage comme quelque chose comme ça

site.com/users/**{userId or Username}**/wall => *should route to wall() action* 

site.com/users/**{userId or Username}**/dishes => *should route to dishes() action* 

site.com/users/**{userId or Username}**/restaurants => *should route to restaurants() action* 

site.com/users/**{userId or Username}**/photos => *should route to photos() action* 

Je ne sais pas comment garder l'URL intacte dans la barre d'adresse, mais charger les actions .. où l'ID utilisateur ou nom d'utilisateur est passé sur la action.

Répondre

0

http://bakery.cakephp.org/articles/view/cakephp-s-routing-explained

<?php 
Router::connect(
    '/writings/:username/:action/:id/*', 
    array(
     'controller' => 'articles' 
    ), 
    array(
     'pass' => array(
      'id', 
      'username' 
     ) 
    ) 
); 
?> 

Avoir cet itinéraire fait CakePHP appelez votre action comme $ Controller-> show (69, 'phally') et votre action devrait ressembler à:

<?php 
public function show($id = null, $username = null) { 
    // $id == 69; 
    // $username == 'phally'; 
} 
?> 
1

Essayez:

Router::connect(
    '/users/:id/:action', 
    array(
     'controller' => 'users' 
     'id' => '[0-9]+') # or [a-zA-Z0-9] for username 
); 

aussi dans les actions (mur, plats ...) vous devez ajouter:

$id = $this->params['id']; 
+1

''pass '=> array (' id ')' http://book.cakephp.org/view/543/Passing-parameters-to-action – deizel