Yii Framework是一個基於元件、用於開發大型 Web 應用的高效能 PHP 框架。 Yii提供了今日Web 2.0應用開發所需的幾乎一切功能。 Yii是最有效率的PHP框架之一。 Yii是創辦人薛強的心血結晶,於2008年1月1日開始開發。
一個稍微大點的項目,如果按照yii產生的webapp來開發。所有的controller放到controllers資料夾下,所有的model放到models資料夾下面,如果你有 n 多個 controller 和 n 多的 model ,這種情況下維護程式碼將是一個非常痛苦的過程。為了避免這種情況,Yii 提供了一種 Modules(模組) 的目錄結構方式。
Modules(模組) 是一個獨立的單元,包含視圖、控制器和其它元件,它和一個應用的差異是不能單獨部署,模組都保存在應用的 moudules 目錄裡面。
你的專案可以分成 n 多個 Module,然後每一個 Module 有自己的 controllers 和 models 。這樣的組織架構,無論是開發,管理都要方便簡潔許多。
YII中的模組是非常靈活的,一個模組可以包含子模組。理論上,模組可以是無限嵌套。
模組的目錄結構(這裡以下面產生的目錄結構做說明)
modules 模組的存放目錄
└── admin 一個模組,模組的名字對應是目錄的名字,唯一。也是路由中的moduleid
├── components 模組使用的元件
├── controllers 包含控制器
│ └── DefaultController.## │ └── DefaultController.## │ └── DefaultController.## ## ├── models 模型類別檔案
├── AdminModule.php 模組的類別檔案
└── views 試圖檔案
── index.php視圖檔案
└── layouts 包含佈局檔案
基本的目錄結構如上,當然你可以在自己加入一些自訂的東西。
建立模組的方法(這裡我們透過yii 自帶的gii 產生器來建立模組)
<?php ...... 'modules'=>array( 'gii'=>array( 'class'=>'system.gii.GiiModule', 'password'=>'123456',//你的密码访问时需要输入 'ipFilters'=>array('127.0.0.1','::1'), ), ),然後造訪url 你的應用程式/index.php?r=gii 存取gii,開啟以後選擇,左邊選單的Module Generator 選項。你將會看到下面的畫面 在 Module ID 輸入模組的名稱,我在這裡輸入 admin ,然後點擊 Preview 按鈕。如下圖所示,它向你展示了所有將會被產生的文件,允許你在新建之前預覽他們 : 然後點擊 Generate 按鈕,來產生所有文件。因為 Web 伺服器進程需要寫入權限,所以確保你的 /protected 資料夾對於該應用程式是可寫入的。 設定使用這個模組我們對主設定檔protected/config/main.php 進行配置,如下的程式碼需要被修改,新增了'admin' :
'modules'=>array( 'gii'=>array( 'class'=>'system.gii.GiiModule', 'password'=>'你的密码', ), 'admin', ),儲存上面的修改後後,我們的新admin 模組已經可以使用了。我們可以透過以下地址存取我們創建的模組:你的應用程式/index.php?r=admin/default/index在模組中使用layout我們存取index.php?r=admin/default/index 會發現,模組使用了你的應用下的/protected/views /layouts/main.php 文件,而我們可能想要使用/protected/modules/admin/views/layouts /main.php 文件,讓admin 模組擁有獨立的佈局視圖。我們可以在:protected\modules\admin\controllers\DefaultController.php 加入以下程式碼。 public $layout='application.modules.admin.views.layouts.main';我們把從/protected/views/layouts/main.php 拷貝到/protected/modules/ admin/views/layouts/ ,稍作修改,這樣模組就擁有了獨立的佈局視圖。 在模組中使用Assets新增新的模組時,一般會包含映像文件,CSS文件,JavaScript文件等。 模組可以直接從網站主目錄中引用。但是如果想要創建一個模組能夠在任何地方引用,並且能夠避免命名衝突,就要用到assets了。 過程是(這裡模組名稱是admin):1、把需要用到的資源放在modules/admin/assets下。 2、然後透過CAssetManager,Yii::app()->assetManager 能夠自動的將私有資源publish 到公用目錄下網站目錄/assets3、Yii 會自動在網站目錄的/assets 下創建一個隨機不衝突的資料夾,如2b31b42b,並把你的modules/admin/assets目錄下的文件拷貝過去。 例如我的模組是Admin,檔案路徑透過如下程式碼取得,修改protected\modules\admin\AdminModule.php檔案。
class AdminModule extends CWebModule{ private$_assetsUrl; $this->_assetsUrl=Yii::app()->getAssetManager()->publish(Yii::getPathOfAlias('application.modules.admin.assets')); return$this->_assetsUrl; } public function setAssetsUrl($value){ $this->_assetsUrl=$value; } }
然后,在 /protected/modules/admin/views/layouts/main.php 中使用 $this->module->assetsUrl 就可以调用你的css等文件了。模板文件的代码如下:
<link rel="stylesheet" type="text/css" href="<?php echo $this->module->assetsUrl; ?>/css/screen.css" />
4,通过如上操作,该模块只要把admin目录拷贝,就可以多次复用了。
模块的配置,使用方法
在配置文件 /config/main.php 中:
配置文件中也可以及添加对模块中属性初始化的参数例如:
'modules'=>array('admin'=>array('web_url'=>'www.phpernote.com'),
对应在 Controller 中的访问方式是:
Yii::app()->controller->module->web_url;
作为程序员,我们要知道,Yii是一个基于组件的高性能PHP框架,用于开发大型Web应用。Yii采用严格的OOP编写,并有着完善的库引用以及全面的教程。从 MVC,DAO/ActiveRecord,widgets,caching,等级式RBAC,Web服务,到主题化,I18N和L10N,Yii提供了今日Web 2.0应用开发所需要的几乎一切功能。事实上,Yii是最有效率的PHP框架之一。
希望本节内容能让大家在Yii框架上有更多的收获。
相关推荐:
以上是Yii framework框架模組開發的詳細內容。更多資訊請關注PHP中文網其他相關文章!