1

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

我仅将所有操作用作管理员,用于管理目的,例如 admin_view、admin_add...... 除了 siteController(此控制器仅用于前端目的)

我需要我的 www.example.com/site/view/something_here 必须替换为 www.example.com/something_here - 这将显示在前端所以。

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

Router::connect('/*', array('controller' => 'site', 'action' => 'view'));

但添加后我无法使用其他控制器。

我在上述行之前再次添加了一些行:

Router::connect('/admin/Menus/*', array('controller' => 'menus', 'prefix' => 'admin'));

所有其他控制器都一样,但是如果我在 url 中发送任何操作或 id,它就不起作用。像 - http://www.exmple.com/admin/menus/[view/1] - 方括号里面的那个不起作用。

关于重写这个的任何想法?

4

1 回答 1

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));
于 2012-04-19T21:41:45.240 回答