CakePHP 路由到控制器和页面



是否可以在同一 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/userwww.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')
);

最新更新