0

我正在使用 cakephp 1.3。这是我的问题:

我有一个名为“learns”的控制器和一个名为“classroom”的方法。

要访问课堂方法,我使用此链接: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]+'));

我真的不知道为什么它不起作用。我通读了文档,我只是从食谱中复制了这个解决方案..

我在这里先向您的帮助表示感谢。

4

1 回答 1

1

我认为您的路由器声明没有任何问题。虽然我不确定你是否真的想要/:class/:id而不是“ /class/:id ”。看到不同?第 2 版中缺少冒号。

这告诉路由器任何以 /class/[an-id] 开头的请求都应该映射到您的规则。将其设置为 /:class 意味着您将参数传递给路由器。它可以是任何东西/foo/15/bar/15并且这些参数将在您的$this->params['class']$this->params['id']中可用。假设这条规则 -> / :班级号

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

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

/users/* 和 /users/:id

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

如果这是您的情况,我建议您阅读如何编写自定义路由类。总之,自定义路由类试图使贪婪的路由不那么贪婪。为了获得更好的解释,这里是 mark story 的一篇优秀文章:http: //mark-story.com/posts/view/using-custom-route-classes-in-cakephp

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

于 2012-09-12T23:21:37.677 回答