2010-01-27 51 views
2

在我的應用程序中,我有許多具有相同前綴的控制器。例如起見,讓我們說,他們是:這些產生CakePHP路由中的字符串替換

my_posts 
my_users 
my_letters 

的網址都明顯:

/my_posts/view/1 
/my_users/add 
/my_letters/whatever 

我想建立一些自定義的路由,這樣我可以使用的URL像這樣:

/my/posts/view/1 
/my/users/add 
/my/letters/whatever 

所以基本上,如果URL與/my/則控制器開始傳遞到應該my_{whatever_comes_next}

我一直在尋找the documentation,但仍然無法弄清楚。

回答

3
Router::connect(
    '/my/posts/:action/*', 
    array(
     'controller'=>'my_posts', 
     'action'=>'index' 
    ) 
); 
Router::connect(
    '/my/users/:action/*', 
    array(
     'controller'=>'my_users', 
     'action'=>'index' 
    ) 
); 
[..] 

同意,這是不是很舒服,但它應該工作..

+0

這就是我結束了在年底去。 – nickf 2010-01-27 09:38:00

1

不知道這是可能的,但爲什麼不使用中間路由器?

Router::connect (
    '/my/*', 
    array (
     'controller' => 'my_router', 
     'action' => 'route', 
    ) 
); 

class MyRouterController extends AppController { 
    ... 
    function route() 
    { 
     $args = func_get_args(); 
     $controller = array_shift ($args); 
     $this->requestAction (
      'my_'.$controller.'/'.implode('/', $args), 
      array ('return' => true) 
     ); 
    } 
}