CakePHP的DynamicRoute插件给出404错误

时间:2015-11-27 15:18:06

标签: php cakephp cakephp-2.0

我使用此插件在CakePHP 2网络应用程序上创建基于slug的URL:https://github.com/josegonzalez/cakephp-dynamic-route

文档建议您像这样调用Cake控制器: posts/view?id=45

我的网址目前是Cake的默认行为。因此,使用上面的示例posts/view/45有效但posts/view?id=45没有。

当我根据示例调用URL时,我收到404错误。

我的函数是这样写的(例如在PostsController.php中): public function view($id) { // logic to load post by ID // ... }

上述插件几乎没有文档。有没有人使用它或知道我哪里出错了?您似乎无法传递GET变量,例如' id'查看'函数,没有重新分解其中的代码来接受传递的参数?

1 个答案:

答案 0 :(得分:0)

解决方案似乎是需要重新编写一些控制器函数来接受GET样式参数。

在文档中,“spec”字段如下所示: posts/view?id=45

在常规CakePHP应用程序中,其路由如下:posts/view/45

如果您将第二种路线(posts / view / 45)放入“spec”字段,插件就无法使用。

所以答案是“spec”字段必须如此: posts/view?id=45 然后必须重写您的控制器功能,例如

public function view($id) {
    if (isset($this->request->params['id'])) {
        $id = $this->request->params['id'];
    }
}

这样做意味着它可以使用参数(view?id = 45)或标准Cake调用(view / 45)。

请注意这与插件的“slug”方面无关 - 根据文档示例,“slug”可以是任何内容:/why-isnt-this-pup-asleep或{{1 }}。最初的问题是询问是否有办法将文档中给出的“规范”映射到Cake控制器函数,而不必像上面那样修改它。答案似乎不是,你必须修改它们!