【发布时间】:2012-06-03 14:35:57
【问题描述】:
保持简短和甜蜜:我可以很容易地在 routes.php 中指定类似以下内容并使所需形式的 url 工作:
Router::connect('/:controller/:id',
array('action'=>'item'),
array('id'=>'[0-9]+')
);
但是,Cake 仍然将路由生成为 '/:controller/item/:id'。有没有一种简单的方法可以让 Cake 的反向路由在不包含操作的情况下生成 url?还是我只需要通过我的应用程序并手动将相关数组替换为“/:controller/$id”?
【问题讨论】:
-
你能举一些你试图扭转但不起作用的例子吗?它首先是否正确路由?我觉得这一切都很好。
-
这种数组传递给 Html->link: array('controller'=>':controller', 'action'=>'item', $id) 似乎给了我一个链接/控制器/项目/$id。我不知道这是否是预期的,我只是太努力了 - /controller/$id 表单中的路由确实有效。我确实找到了一个可能的解决方案,我将在下面发布,但是任何真正了解 Cake 路由如何工作的人仍然可以随时启发我,我应该如何 做这种事情!跨度>
-
array('controller'=>'videos', 'action'=>'item', $id)应该匹配并变成/videos/$id。您是否尝试在您的 HTML 链接中使用:controller,因为这不起作用。创建链接时仍然需要定义控制器。反向路由正在将/videos/$id更改为array('controller'=>'videos', 'action'=>'item', $id),这也应该可以工作。 -
我会玩一玩,让你知道会发生什么!谢谢!
-
@jeremyharris 这不好,如果没有“/item/”出现在中间,我似乎无法生成网址!或许我应该硬着头皮去调查 Cake 代码,我显然需要为我揭开神秘的路线秘密......
标签: cakephp routing cakephp-2.0