我有以下路线:
$routes->resources('Articles', function ($routes) {
$routes->resources('Comments');
});
我想链接到ID为4的文章的所有评论:
articles/4/comments
如何使用cake HtmlHelper创建指向此网址的链接?
有关嵌套路线的更多信息: https://book.cakephp.org/3.0/en/development/routing.html#creating-nested-resource-routes
答案 0 :(得分:2)
查看链接文档中给出的示例路由模式,嵌套Articles
> Comments
资源将使用以下模式为Comments
创建路由:
/articles/:article_id/comments
/articles/:article_id/comments/:id
您还可以检查$ bin/cake routes
以获取所有已连接路由及其模式和默认值的列表。您正在寻找的路线将列在那里:
+----------------+--------------------------------+--------------------------------------------------------------------------+
| Route name | URI template | Defaults |
+----------------+--------------------------------+--------------------------------------------------------------------------+
| comments:index | /articles/:article_id/comments | {"controller":"Comments","action":"index","_method":"GET","plugin":null} |
所有资源路由都绑定到特定的HTTP方法(如上面的默认列中所示),即在内部使用_method
选项,父ID以单数控制器/资源名称为前缀。
要匹配Comments
索引,只需像往常一样定位Comments
控制器和index
操作即可。另外,传递相应的_method
(对于index
GET
article_id
,并以命名方式传递父ID,即[
'controller' => 'Comments',
'action' => 'index',
'_method' => 'GET',
'article_id' => 4
]
,如:
<?php
include 'lang.en.php';
$pagetitle = $lang['TITLE_INDEX'];
include 'header.php';
?>
另见
答案 1 :(得分:0)
您可以加入Html和Url助手,例如:
<?=
$this->Html->link(
'Enter',
$this->Url->build('/articles/4/comments', true),
['class' => 'button', 'target' => '_blank']
);
?>
另见: