Cakephp once控制器的Url重写-cake 2.0

Cakephp once控制器的Url重写-cake 2.0,cakephp,url-rewriting,routes,cakephp-2.0,Cakephp,Url Rewriting,Routes,Cakephp 2.0,我正在用CakePHP开发一个简单的CMS,现在它有4个控制器(菜单、站点、角色、用户),我想重写一个控制器,但我遇到了问题 我将所有操作仅作为管理员用于管理目的,如管理员视图、管理员添加。。。。。。 siteController除外(此控制器仅用于前端) 我需要我的www.example.com/site/view/something_此处必须替换为www.example.com/something_此处-这将显示在前端so 我在路由文件中添加了一行: Router::connect('/*'

我正在用CakePHP开发一个简单的CMS,现在它有4个控制器(菜单、站点、角色、用户),我想重写一个控制器,但我遇到了问题

我将所有操作仅作为管理员用于管理目的,如管理员视图、管理员添加。。。。。。 siteController除外(此控制器仅用于前端)

我需要我的www.example.com/site/view/something_此处必须替换为www.example.com/something_此处-这将显示在前端so

我在路由文件中添加了一行:

Router::connect('/*', array('controller' => 'site', 'action' => 'view'));
但是在添加这个之后,我无法使用其他控制器

我再次在上述行之前添加了更多行:

Router::connect('/admin/Menus/*', array('controller' => 'menus', 'prefix' => 'admin'));
所有其他控制器也是如此,但若我在url中发送任何动作或id,它就不起作用。 像-http://www.exmple.com/admin/menus/[视图/1]-方括号内的一个不起作用


关于重写这篇文章有什么想法吗?

我刚才回答了一个类似的问题

将管理控制器路由置于“/*”路由之前是正确的想法,但您这样做的方式路由器无法分配操作。您可以为每个控制器使用以下各项:

Router::connect('/admin/Menus/:action/*', array('controller' => 'menus', 'prefix' => 'admin'));
或者您可以使用,这样就不必为每个新控制器添加路由

// prefix routing default routes with admin prefix
Router::connect("/admin/:controller", array('action' => 'index', 'prefix' => 'admin', 'admin' => true));
Router::connect("/admin/:controller/:action/*", array('prefix' => 'admin', 'admin' => true));

我刚才回答了一个类似的问题

将管理控制器路由置于“/*”路由之前是正确的想法,但您这样做的方式路由器无法分配操作。您可以为每个控制器使用以下各项:

Router::connect('/admin/Menus/:action/*', array('controller' => 'menus', 'prefix' => 'admin'));
或者您可以使用,这样就不必为每个新控制器添加路由

// prefix routing default routes with admin prefix
Router::connect("/admin/:controller", array('action' => 'index', 'prefix' => 'admin', 'admin' => true));
Router::connect("/admin/:controller/:action/*", array('prefix' => 'admin', 'admin' => true));

非常感谢,它有帮助,我修好了。非常感谢,它有帮助,我修好了。