evoself 2012-05-07 22:54:10 4247次浏览 0条回复 1 0 0

自己根据理解翻译的,并非完全照原文来的,水平有限欢迎指正,原文在此:http://www.yiichina.com/tutorial/4

[b][size=3]组织前台和后台的应用目录[/size][/b] 大型应用程序通常根据目标用户群体划分前端和后端(或者更多分支)。前端一般提供给普通用户,而后端主要供管理员或工作人员。两端通常显示不同的外观,即使他们可能共用很多相同的代码。在本教程中,我们说明了划分两端代码目录一种组织方式。 注:本教程中描述的目录组织架构并不是一个标准是,仅作为参照执行。Yii根据您的需要为您提供完整的自由组织应用架构的方式。 首先,我们采用了如下的目录组织架构,

wwwroot/
    index.php
    backend.php
    assets/
    images/
    js/
    protected/
        config/
            main.php
        components/
        controllers/
        models/
        views/
        runtime/
        backend/
            config/
                main.php
            components/
            controllers/
            models/
            views/
            runtime/

我们有两个入口脚本:index.php和backend.php。前者用于前端,而后者则用于后台。所有应用程序代码被放置在基础目录protected文件夹下,我们应该通过配置防止最终用户直接访问。我们有一个典型的Yii应用所需要的子目录:config,component,controller,models,views和runtime。额外的backend目录用于存储专为后台编写的代码。跟前端一样,我们组织config,component,controller,models,views和runtime这些后端代码。 前端和后台的入口脚本代码如下所示。它们的主要区别是:使用不同的配置文件。

// index.php:
require('path/to/yii.php');
Yii::app()->createWebApplication('protected/config/main.php')->run();

// backend.php:
require('path/to/yii.php');
Yii::app()->createWebApplication('protected/backend/config/main.php')->run();

前端应用程序的配置是很典型的,就像我们通常的单个应用(比如blog实例)。后端应用程序的配置有点特别,其内容如下:

$backend=dirname(dirname(__FILE__));
$frontend=dirname($backend);
Yii::setPathOfAlias('backend', $backend);

returnarray(
'basePath' =>$frontend,

'controllerPath' =>$backend.'/controllers',
'viewPath' =>$backend.'/views',
'runtimePath' =>$backend.'/runtime',

'import' =>array(
'backend.models.*',
'backend.components.*',
'application.models.*',
'application.components.*',
),
// ... other configurations ...
);

在上面,我们首先定义为$backend = protected/backend/,$frontend = protected/。然后,我们定义一个根目录命名为$backend作为protected/backend的别名。在配置数组里,我们指定应用程序基础目录前端,即protected/(原因稍后解释)。其余的关键路径(controllerPath,viewPath和runtimePath)是指位于protected/backend。最后,我们导入多个目录,从后台components 和components 目录开始,紧接着是正常的应用程序components 和components 目录。 那么,为什么我们使用protected/作为应用程序前端和后端的基础目录?这是因为后端往往需要重用本来为前端设计的代码,而不是反之亦然。具有相同的基本应用程序目录,意味着两端有相同的路径为应用程序的根路径别名。因此,应用程序别名代码可以在两端重用,这样没有任何问题。 回到后台,除了重用前端代码,通常都有自己的特殊代码来处理,例如内容管理。我们在protected/backend/目录和子目录下存储这些代码。在其应用程序的配置,我们还可以导入这些额外的子目录两端的。

    没有找到数据。
您需要登录后才可以回复。登录 | 立即注册