如何在类别中路由子类别和页面?

时间:2018-03-18 22:08:53

标签: cakephp routes cakephp-3.0

我的子类别和类别中的页面具有相似的结构。例如: site.com/cat/page site.com/cat/subcat 我怎么路由他们?网址只包含字符串,没有ID和任何数字。

1 个答案:

答案 0 :(得分:0)

非常简单,您的routes.php可能如下所示:

$routes->connect(
    '/cat/:page',
    ['controller' => 'Pages', 'action' => 'view'],
    ['page' => '\s+', 'pass' => ['page']]
);

$routes->connect(
    '/cat/:subcat/:page',
    ['controller' => 'Pages', 'action' => 'subcatView'],
    ['subcat' => '\s+', 'page' => '\s+', 'pass' => ['subcat', 'page']]
);

接下来,在你的PagesController.php中(实际上你可以使用任何其他你的控制器/动作,只需在上面的路线中替换你的名字):

public function view($page) {
//i.e. if url is /cat/about then $page === 'about'
}
public function subcatView($subcat, $page) {
// i.e. if url is /cat/subcat/some_page then $subcat === 'subcat' & $page === 'some_page'
}

我强烈建议您参考cakephp3 documentation, routes section,这很明显可以帮助您实现任何魔法。