2010-01-27 74 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) 
     ); 
    } 
}