CakePHP如何将/error/404路由到/errors/error404
我正在尝试美化我的URL,但我不确定如何设置路由,以便:CakePHP如何将/error/404路由到/errors/error404,cakephp,routing,Cakephp,Routing,我正在尝试美化我的URL,但我不确定如何设置路由,以便: /error/403转到/errors/error403 /error/404转到/errors/error404 /error/500转到/errors/error500 等等 目前我有这个,但我不知道去哪里。如何像使用.htaccess一样获取操作参数并将其放入URL Router::connect('/error/:action/*', array('controller' => 'errors', 'action' =>
/error/403
转到/errors/error403
/error/404
转到/errors/error404
/error/500
转到/errors/error500
等等
目前我有这个,但我不知道去哪里。如何像使用.htaccess一样获取操作参数并将其放入URL
Router::connect('/error/:action/*', array('controller' => 'errors', 'action' => ??));
我认为有两种方法可以做到这一点(似乎我总是从这个短语开始回答) 首先是手工编写所有自定义URL
Router::connect('/error/404', array('controller' => 'errors', 'action' => 'error404'));
Router::connect('/error/500', array('controller' => 'errors', 'action' => 'error500'));
这看起来很难看。但是你可以把它放在一个数组中,使它变得漂亮
$errorTypes = array('403', '404', '500')
foreach ($errorTypes as $error)
Router::connect('/error/'.$error, array('controller' => 'errors', 'action' => 'error'.$error));
或者,你可以做一些更像蛋糕的事情(我想)
这意味着您需要ErrorsController中的一个新函数来接收代码并将其发送到不同的操作
class ErrorsController extends AppController {
public function generalError($code) {
if ($code == 404)
$this->error404();
else if ($code == 500)
$this->error500();
/*etc*/
}
}
这两种方法都有效,但这取决于你的行动,如果它们处理更多的参数,你会发现什么更漂亮
class ErrorsController extends AppController {
public function generalError($code) {
if ($code == 404)
$this->error404();
else if ($code == 500)
$this->error500();
/*etc*/
}
}