【发布时间】:2012-06-23 16:16:25
【问题描述】:
我在 routes.php 中有自己的路由规则,为应该通过 URL 访问的所有页面定义,例如 mywebsite/blog/ 和 mywebsite/blog/category/category-name,即我的整个网站的结构被我的自定义路线覆盖。
现在,我有很多使用 requestAction 的元素,比如
$websiteabstract = $this -> requestAction(array(
'controller' => 'assets',
'action' => 'displayHomeAbstract'
));
这给了我一个错误错误:找不到控制器,可能是因为我没有为 /assets/displayHomeAbstract 定义路由。但是,当我明确声明控制器的名称和操作时,为什么我必须为此定义自定义路由?那不应该完全绕过路由吗? 要么我根本不了解路由。还是我真的必须在我的 routes.php 中定义所有可能的路由(甚至是那些仅由 requestAction 使用的路由)?我的意思是,我不想让用户直接访问 mywebsite/assets/displayHomeAbstract,只能通过一个元素。
谢谢
编辑:这是我的 routes.php http://pastebin.com/aAKBwNZJ 请看一下第 128 行,这正是我不想要的,因为 /assets/displayHomeAbstract 只能通过 requestAction 访问。
编辑:这是发出请求的元素:http://pastebin.com/0tK5dYJk
【问题讨论】:
-
如果您在理解路由系统时遇到问题,我建议您保留默认路由。 /controller/method/arg1/arg2/... 你有什么理由重做路由吗?
-
是的,我已经重做路由,因为我想要诸如 mywebsite/blog/2005/05/this-is-the-title 之类的东西,它应该映射到帖子控制器的方法视图和传递两个参数.. 无论如何,重新定义它并因此限制可能的 url 访问是有意义的。我已经了解如何定义新路由并且一切正常,但我真的不明白为什么传递给 requestAction 的数组仍然需要进行路由?
-
我想禁用默认路由以规避 SEO 问题,正如食谱中所建议的那样。
-
这可能是你的问题,as the cookbook warns。您可以将您的路由配置粘贴到您的问题中吗?这与您的问题有关。
-
另外,一般建议,让它工作,让它漂亮,让它快速(/优化)。过早的优化可能会导致不必要的麻烦。
标签: php cakephp cakephp-2.0