【问题标题】:CakePHP 2.5 routes within /admin section/admin 部分中的 CakePHP 2.5 路由
【发布时间】:2014-07-10 08:52:51
【问题描述】:

我觉得应该有,而且可能是,一个简单的解决方案。

我正在构建的站点将有一个管理界面,所有 CakePHP 功能都将在其中运行。管理界面将生成静态文件,然后将其用作网站的前端。

我希望所有的管理页面都在 /admin 下,所以...

/admin/users/login
/admin/users/index
/admin/page/edit/x
/admin/module/add

等等等等

所有生成的内容都将依赖于 /,因此唯一不能作为内容创建的“页面”是 /admin 以及文档根目录中存在的任何内容(index.php 等)。基本上,我想避免用一堆 Cake 的虚拟路径/路由污染根“目录空间”。

我查看了Route::connect 和相关文档,以及与"prefix" => "admin""admin" => true 等内容相关的HTML 链接帮助文档,但我只是不知道如何进行这项工作。

在理想的设置中,所有/admin/fizz/buzz/1 类型的 URL 都会像在普通的 CakePHP 部署中实际上是 /fizz/buzz/1 一样执行,并且所有:

$this->Html->link('label', array('controller' => 'foo', 'action' => 'bar', 3));

helper 生成等效 URL,例如 /admin/foo/bar/3

我该怎么做?

【问题讨论】:

    标签: cakephp routes cakephp-2.0 customization


    【解决方案1】:

    要使所有控制器操作生成并响应以/admin 开头的url:

    移动应用程序

    您可以移动整个应用程序,即这样可以:

    DOCUMENT_ROOT
        admin
            app
                controllers
                models
                views
                webroot
            cake
            vendors
    

    当然,这样更好:

    app
        controllers
        models
        views
        webroot
    cake
    vendors
    DOCUMENT_ROOT
        admin -> ../app/webroot #symlink
    

    (或任何类似的解决方案)

    基于路线

    或者,代替including standard routes,定义您自己的:

    <?php
    // app/Config/routes.php
    
    Router::connect(
        '/admin', 
        array('controller' => 'pages', 'action' => 'display', 'home')
    );
    Router::connect(
        '/admin/pages/*', 
        array('controller' => 'pages', 'action' => 'display')
    );
    Router::connect(
        '/admin/:controller', 
        array('action' => 'index')
    );
    Router::connect(
        '/admin/:controller/:action/*'
    );
    // EOF
    

    这样,所有路由的url都会以字符串/admin开头

    【讨论】:

    • 完美!我使用了基于路线的方法。我已经连接了您描述的路由,但一定是包含了标准路由规则,导致生成不正确的 URL。
    • 路由在第一次匹配的基础上工作,所以如果标准路由被包含/定义较早(或者如果出于任何原因上述路由不匹配) -将使用默认路由。
    猜你喜欢
    • 2014-09-08
    • 2012-09-26
    • 1970-01-01
    • 2012-01-02
    • 1970-01-01
    • 2012-07-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-25
    相关资源
    最近更新 更多