我的子类别和类别中的页面具有相似的结构。例如: site.com/cat/page site.com/cat/subcat 我怎么路由他们?网址只包含字符串,没有ID和任何数字。
答案 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,这很明显可以帮助您实现任何魔法。