我想从网址中删除控制器名称。它适用于一个控制器,但不适用于多个控制器。这是我在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()
配置?
答案 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版本。