CakePHP 2.5/admin部分内的路由

CakePHP 2.5/admin部分内的路由,cakephp,routes,cakephp-2.0,customization,Cakephp,Routes,Cakephp 2.0,Customization,我觉得应该有,而且可能是,一个简单的解决办法 我正在构建的站点将有一个管理界面,所有CakePHP功能都将在该界面上运行。管理界面将生成静态文件,然后作为站点的前端 我希望所有的管理页面都在/admin下,所以 /admin/users/login /admin/users/index /admin/page/edit/x /admin/module/add 等等等等 所有生成的内容都将依赖于/所以唯一不能作为内容创建的“页面”是/admin以及文档根目录(index.php等)中存在的任何内

我觉得应该有,而且可能是,一个简单的解决办法

我正在构建的站点将有一个管理界面,所有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部署中一样执行,并且所有:

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

助手生成的等效URL,如
/admin/foo/bar/3


如何执行此操作?

要使所有控制器操作生成并响应以
/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
(或任何类似的解决方案)

基于路由的 或者,定义您自己的,而不是:

<?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的标准路由规则。路由是在第一次匹配的基础上工作的,因此,如果先前包含/定义了标准路由(或者如果由于任何原因上述路由不匹配),则将使用默认路由。