Cakephp路由未给出正确的结果

Cakephp路由未给出正确的结果,cakephp,Cakephp,我使用的是CakePHP1.3。我的问题是: 我有一个名为“学习”的控制器和一个名为“课堂”的方法 要访问课堂教学方法,我使用以下链接: 我希望它是这样的: 这就是我设置路线的方式: Router::connect('/:class/:id', array('controller' => 'learns', 'action' => 'classroom'), array('id' => '[0-9]+')); 我真的不知道为什么它不起作用。我通读了文档,然后从食谱中复制了这个

我使用的是CakePHP1.3。我的问题是:

我有一个名为“学习”的控制器和一个名为“课堂”的方法

要访问课堂教学方法,我使用以下链接:

我希望它是这样的:

这就是我设置路线的方式:

Router::connect('/:class/:id', array('controller' => 'learns', 'action' => 'classroom'), array('id' => '[0-9]+'));
我真的不知道为什么它不起作用。我通读了文档,然后从食谱中复制了这个解决方案


提前感谢您的帮助。

我认为您的路由器声明没有任何错误。虽然我不确定您是否真的想要/:class/:id而不是“/class/:id”。看到区别了吗?第二个版本中缺少冒号

这告诉路由器,任何以/class/[a id]开头的请求都应该映射到您的规则。其中as have it as/:class表示将参数传递给路由器。它可以是任何/foo/15/bar/15,这些参数将在您的$this->params['class']$this->params['id']中可用,假设此规则->/:class/:id

在你的问题中,你说“我真的不知道为什么它不起作用”。请避免这些陈述,因为它没有说明任何实际问题

告诉我们你在期待什么?你看到了什么?这是一个错误吗?还是警告?如果您看到的是完全不同的东西,例如执行了一个不同的操作,那么这可能是由于路由器实际上是如何工作的。如果你有一条贪婪的路线和一条像这样的普通路线:

/用户/*和 /用户/:id

第二个url不会与任何请求匹配,因为/users/*是贪婪的,并且会将所有请求都托管到自身,除非第一个路由规则返回false

如果这是您的情况,我建议您仔细阅读如何编写自定义路由类。总之,自定义路由类试图使贪婪路由不那么贪婪。为了更好地解释,这里有一篇由mark story撰写的优秀文章:

cakephp中的路由是最令人困惑的话题之一,可能需要一段时间才能理解它。食谱是你最好的朋友。阅读并重新阅读所有内容,直到您确定每个路由元素在路由规则中的作用