2010-10-12 113 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