2010-10-12 156 views
0

我有一个用户模块和几个动作,如墙,餐具,餐厅,照片。CakePHP路由帮助

我想建立一个路由像这样的事情

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* 

我不知道如何保持完整的URL在地址栏,但加载动作..其中用户ID或用户名被传递到行动。

回答

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' 
     ) 
    ) 
); 
?> 

有了这条路线让CakePHP的把你的动作称为$ Controller-> show(69,'phally'),然后你的动作应该如下所示:

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

尝试:

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

而且这些动作(墙,菜肴......),你需要添加:

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

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