CakePHP 2.5路由在/ admin部分

时间:2014-05-21 15:37:35

标签: cakephp routes cakephp-2.0 customization

我觉得应该有,也许是一个简单的解决方案。

我正在构建的网站将有一个管理界面,所有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

我该怎么做?

1 个答案:

答案 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

开头