【问题标题】:Url Rewriting of once controller - cake 2.0一次控制器的 URL 重写 - cake 2.0
【发布时间】:2012-04-27 19:01:12
【问题描述】:

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

关于重写这个有什么想法吗?

【问题讨论】:

    标签: cakephp url-rewriting routes cakephp-2.0


    【解决方案1】:

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

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

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

    【讨论】:

    • 非常感谢,帮了大忙,我修好了。
    猜你喜欢
    • 1970-01-01
    • 2015-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-19
    相关资源
    最近更新 更多