我有一个带有许多内部链接的 CakePHP 网站,这些链接是使用以下内容构建的HtmlHelper
:
/app/View/MyController/myaction.ctp
<?php
echo $this->Html->link(
$item['Search']['name'],
array(
'controller' => 'targetcontroller',
'action' => 'targetaction',
$profileId,
$languageId
)
);
?>
它适用于默认路由:
/app/Config/routes.php
Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'display'));
生成的链接如下所示:/mycontroller/myaction/$profileId/$languageId
.
现在我想为网站的一部分使用搜索引擎友好的 URL(使用配置文件名称和 ISO-639-1 语言代码而不是 ID)并添加了一个新路由:
/app/Config/routes.php
Router::connect(
'/:iso6391/:name.html',
array('controller' => 'mycontroller', 'action' => 'myaction'),
array(
'iso6391' => '[a-zA-Z]+',
'name' => '[0-9a-zA-ZäöüßÄÖÜ\-]+',
)
);
而且它也可以正常工作,并且可以正确解释传入的 URI /producer/en/TestName.html
。
但HtmlHelper
仍在生成旧的 URI,如/mycontroller/myaction/1/1
.
文档说:
反向路由是 CakePHP 中的一项功能,用于允许您轻松更改 URL 结构,而无需修改所有代码。通过使用路由数组来定义您的 URL,您可以稍后配置路由,并且生成的 URL 将自动更新。
好吧,HtmlHelper
得到一个路由数组作为输入,这意味着:我正在使用反向路由。
为什么它不起作用?如何HtmlHelper
生成新的 URL(不更改HtmlHelper#link(...)
调用)?