我觉得应该有,也许是一个简单的解决方案。
我正在构建的网站将有一个管理界面,所有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));
帮助程序生成的等效网址如/admin/foo/bar/3
我该怎么做?
答案 0 :(得分:1)
要使所有控制器操作生成并响应以/admin
开头的网址:
您可以移动整个应用,即可以使用:
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
这样,所有路由的网址都将以字符串/admin