从url中删除控制器名称不适用于cakephp中的多个控制器

时间:2015-08-10 09:59:23

标签: cakephp routes

我想从网址中删除控制器名称。它适用于一个控制器,但不适用于多个控制器。这是我在Route.php中的代码:

 Router::connect('videos/:action', array('controller' => 'videos'));
 Router::connect('/:action', array('controller' => 'frontends')); 

但是当我尝试访问http://local.tbn24.dev/videos时,它会显示:

  

错误:操作视频未在控制器FrontendsController中定义

证明以上网址参考

Router::connect('/:action', array('controller' => 'frontends'));

我希望此网址达到视频控制器索引功能。我怎么能同时使用Route::connect()配置?

1 个答案:

答案 0 :(得分:1)

  

但是当我尝试访问http://local.tbn24.dev/videos

没有路由

在定义的两个路由中,这个路由与上面的url不匹配,因为它只是一个路径段:

Router::connect('videos/:action', array('controller' => 'videos'));

因此,它将匹配catch所有路径,videos被解释为要查找的动作。

另请注意,如果没有前导斜杠,路线将无法匹配任何请求,因为它们始终以前导斜杠开头。

仅匹配控制器名称

的路由

定义匹配/videos的路由 - 定义匹配该特定字符串的路由:

Router::connect('/videos', array('controller' => 'videos', 'action' => 'index'));

或者,定义具有限制性模式的路线:

Router::connect(
    '/:controller', 
    array('action' => 'index'),
    array('controller' => 'videos|stuff'),
);

有关路线的更多信息,请查看the documentation以了解您正在使用的CakePHP版本。