Url重写曾经的控制器 - 蛋糕2.0

时间:2012-04-16 12:41:51

标签: cakephp url-rewriting routes cakephp-2.0

我正在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] - 方括号内的一个不起作用。

有关重写此事的任何想法吗?

1 个答案:

答案 0 :(得分:1)

我刚刚在another thread上回答了类似的问题。

将管理控制器路由放在' / *' -route之前是正确的想法,但是你这样做的路由器无法分配一个动作。您可以为每个控制器使用以下内容:

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

或者您可以使用default prefix-routing routes,因此您不必为每个新控制器添加路线。

// 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));