首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CakePHP如何将/error/404路由到/errors/error404

CakePHP如何将/error/404路由到/errors/error404
EN

Stack Overflow用户
提问于 2013-06-24 02:12:44
回答 1查看 1.4K关注 0票数 1

我正在尝试美化我的URL,但我不确定如何设置路由,以便:

/error/403转到/errors/error403

/error/404转到/errors/error404

/error/500转到/errors/error500

等。

目前我有这个,但我不知道该怎么做。如何获取操作参数并将其放入URL,就像使用.htaccess一样?

代码语言:javascript
复制
Router::connect('/error/:action/*', array('controller' => 'errors', 'action' => ??));
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-25 06:06:28

我看到了两种方法(似乎我的答案总是以这句话开头)。

第一种方法是手动编写所有自定义urls

代码语言:javascript
复制
Router::connect('/error/404', array('controller' => 'errors', 'action' => 'error404'));
Router::connect('/error/500', array('controller' => 'errors', 'action' => 'error500'));

这看起来相当丑陋。但是你可以把它放在一个数组中来美化它。

代码语言:javascript
复制
$errorTypes = array('403', '404', '500')
foreach ($errorTypes as $error)
    Router::connect('/error/'.$error, array('controller' => 'errors', 'action' => 'error'.$error));

或者,你可以做一些更像蛋糕的事情(我想)

代码语言:javascript
复制
Router::connect('/error/:code', 
     array('controller' => 'errors',  'action' => 'generalError'),
     array('pass' => array('code'),
           'code' => '[0-9]+'));

这意味着您的ErrorsController中需要一个新函数来接收代码并将其发送到不同的操作

代码语言:javascript
复制
class ErrorsController extends AppController {
    public function generalError($code) {
       if ($code == 404)
          $this->error404();
       else if ($code == 500)
          $this->error500();
       /*etc*/
    }
}

两者都有效,但这取决于你的行为,如果它们处理更多的参数,你觉得什么更漂亮……

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17263772

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档