CakePHP 2.5/admin部分内的路由
我觉得应该有,而且可能是,一个简单的解决办法 我正在构建的站点将有一个管理界面,所有CakePHP功能都将在该界面上运行。管理界面将生成静态文件,然后作为站点的前端 我希望所有的管理页面都在/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等)中存在的任何内
/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的标准路由规则。路由是在第一次匹配的基础上工作的,因此,如果先前包含/定义了标准路由(或者如果由于任何原因上述路由不匹配),则将使用默认路由。