CakePHP 2.6.9 中的路由

Routing in CakePHP 2.6.9

我正在使用 CakePHP 2.6.9。

我想做以下事情:

  1. www.example.com/detail/10应该指controller => frontendsaction => detail
  2. www.example.com/admins/login应该指controller => adminsaction => login

我编辑 routes.php 如下:

Router::connect('/:action/*',
  array('controller' => 'frontends', 'action' =>'detail'));

但是当我尝试 www.example.com/admins/login 时,它显示以下错误:

The action admins is not defined in controller FrontendsController

证明www.example.com/admins/login指的是

Router::connect('/:action/*',
  array('controller' => 'frontends', 'action' =>'detail'));

路由。我要

Router::connect('/:action/*',
  array('controller' => 'frontends', 'action' =>'detail'));

将仅适用于 controller => frontends and action=>detail,其余 url 将默认使用。有什么想法吗?

这会如你所愿。

Router::connect('/detail/*', array('controller' => 'Frontends', 'action' =>'detail'));

大多数 cakephp url 都像 /controller/action/id。您的路由模板 /:action/* 表明您没有在 url 中使用 controller names,而是仅使用 action names,例如 /detail/id/admins/id,并且所有操作都是在 Frontends 控制器中。您可以从错误消息中看到它试图在 Frontends 控制器中找到 admins 操作。