是否可以在同一 url 中标识控制器和页面名称
Router::connect('/:controller/');
Router::connect('/:pagename/', array('controller' => 'home','action'=>'index'));
www.example.com/controller以便控制器转到 :控制器/索引
www.example.com/pagename以便页面转到主页/索引
它真的很困惑你真正想要什么。如果 url 以类似 www.example.com/posts
:controller
结尾,则其通常映射index
操作。现在,如果 url 以 pagename 结尾,表示操作,例如 www.example.com/mypage
,您可以将其映射为 -
Router::connect('/mypage', array('controller' => 'homes', 'action' => 'index'));
因此,当用户浏览www.example.com/mypage
时,它将映射到HomesController并索引操作。
尝试以下代码作为页面名称:
Router::connect('/:slug', array('controller' => 'home', 'action' => 'index'));
更新 1
如果你想把 www.example.com/user 和 www.example.com/users 一样对待,那么你需要添加以下内容,因为根据 CakePHP 命名约定,CakePHP 控制器名称是复数:
Router::connect('/user/:action/*', array('controller' => 'users'));
更新 2
Router::connect(':slug')
覆盖所有默认路由。因此,您需要使用自定义路由类,如下所示:
App::uses('SlugRoute', 'Routing/Route');
Router::connect(
'/:slug',
array('controller' => 'home', 'action' => 'index'),
array('routeClass' => 'SlugRoute')
);