Html帮助链接到嵌套资源路由

时间:2017-05-30 11:55:25

标签: php cakephp url-routing cakephp-3.0

我有以下路线:

$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

2 个答案:

答案 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']
    ); 
?>

另见: