我目前有来自Variable Prefixed Routing in CakePHP
的CakePHP路线设置这是我的routes.php:
Router::connect( "/:forum/:controller/:action/*", array(), array("pass" => array("forum")) ); Router::connect( "/:forum", array( "controller" => "forums", "action" => "index" ), array("pass" => array("forum")) );
这非常有效,例如/example/users/login
将路由到UsersController :: login,而$this->request->params["forum"]
将包含example
。
然而,在查看tmp/logs/debug.log
时,我发现此路由产生了很多错误,我无法理解为什么会发生这种情况,因为路由显然工作正常:
2012-08-22 02:29:09 Error: [MissingControllerException] Controller class ExampleController could not be found. #0 /var/www/app/webroot/index.php(92): Dispatcher->dispatch(Object(CakeRequest), Object(CakeResponse)) #1 {main}
它本质上是试图寻找一个ExampleController(因为我试图访问/example/users/login
),但routes.php
专门告诉CakePHP寻找用户控制器而不是示例控制器。
有没有办法解决这个问题?我无法理解为什么会发生这种情况,因为显然正常工作。
答案 0 :(得分:1)
/ example / users是否有效,就像它路由到UsersController :: index()一样。如果没有,你应该只需要/:forum/:controller的路由,所以尝试在当前路由之前添加它,看看它是否清除了错误:
Router::connect(
"/:forum/:controller",
array('action' => 'index'),
array("pass" => array("forum"))
);