2012-09-12 157 views
0

我正在使用cakephp 1.3。这里是我的问题:Cakephp路由没有给出正确的结果

我有一个名为“学习”的控制器和一个名为“教室”的方法。

要进入课堂的方法,我用这个链接:http://www.url.com/learns/classroom/15

我想它是这样的:http://www.url.com/class/15

这是我怎么设置路由:

Router::connect('/:class/:id', array('controller' => 'learns', 'action' => 'classroom'), array('id' => '[0-9]+')); 

我真的不知道为什么它不工作。我阅读了文档,我刚刚从食谱中复制了此解决方案。

感谢您的帮助。

回答

1

我没有看到你的路由器语句有什么问题。虽然我不确定你是否真的想要/:class /:id而不是“/class /:id”。看到不同?第二版中没有冒号。

这告诉路由器,任何以/ class/[an-id]开头的请求都应该映射到您的规则。把它作为/:class意味着你传递了一个参数给路由器。它可以是任何/富/ 15/酒吧/ 15和这些参数会在你$这个 - > PARAMS [ '类']$这个 - > PARAMS可用[ '身份证']假设这条规则 - >/:class /:id

在你的问题中你说“我真的不知道为什么它不工作”。请避免这些陈述,因为它没有提到有关实际问题的任何事情。

请告诉我们你期待什么?你看到了什么?这是一个错误吗?还是警告?如果您完全看到其他内容,例如执行了不同的操作,则可能是由于路由器实际工作的事实。如果你有一个贪婪的路线和正常的路线是这样的:

/用户/ *和 /用户/:ID

第二url不会提出任何要求相匹配为/用户/ *为贪婪,并且会将所有请求集中到自身,除非第一个路由规则返回false。

如果这是你的情况,我建议你阅读如何编写自定义路线类。总之,自定义路线类尝试使贪婪路线不那么贪婪。为了更好的解释这里是一个很好的文章标记故事:http://mark-story.com/posts/view/using-custom-route-classes-in-cakephp

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

相关问题