【发布时间】:2012-09-28 20:14:22
【问题描述】:
在我的 CakePHP 应用程序中,我连接了以下路由:
Router::connect('/:city/dealer/:id',
array('controller' => 'dealers', 'action' => 'view'),
array(
'pass' => array('city', 'id'),
'city' => '[a-z]+',
'id' => '[0-9]+'
)
);
这很好用并且可以启用:domain.com/washington/dealer/1
但是如何在视图中为该 URL 生成正确的 HTML 链接?如果我这样做:
echo $this->Html->link(
'Testlink',
array('washington', 'controller' => 'dealers', 'action' => 'view', 1)
);
它将所有参数添加到生成链接的末尾:
http://domain.com/dealers/view/washington/1
我该如何正确地做到这一点?
【问题讨论】:
-
如果您在路线中使用 '/:city/:controller/:id' 会发生什么?您希望其他控制器使用相同的模式吗?
-
当我使用 '/:city/:controller/:id' 时,Cake 抱怨 domain.com/washington/dealer/1 缺少 DealerController ... App 中基本上只有这个控制器 ...
-
试试 domain.com/washington/dealers/1(注意经销商上的 s)
-
复数形式有效,但这对链接构建没有帮助。
-
好吧,我有点让它与绝对网址一起工作:
$this->Html->link(Link, '/washington/dealers/'.$id.'');这似乎是一个非常糟糕的做法,因为如果我改变路线,它就会停止工作。如果有人知道更好的方法,我会很高兴。
标签: cakephp routing reverse routes view-helpers