首頁 > 後端開發 > php教程 > Yii framework框架模組開發

Yii framework框架模組開發

小云云
發布: 2023-03-17 15:16:01
原創
1535 人瀏覽過

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 產生器來建立模組)

透過yii 自帶的gii 產生器來建立基本的結構,開啟gii 的方法是修改你的應用程式config/main.php 檔案以下內容:

<?php    
   ......    
  &#39;modules&#39;=>array(    
  &#39;gii&#39;=>array(    
 &#39;class&#39;=>&#39;system.gii.GiiModule&#39;,    
  &#39;password&#39;=>&#39;123456&#39;,//你的密码访问时需要输入    
 &#39;ipFilters&#39;=>array(&#39;127.0.0.1&#39;,&#39;::1&#39;),    
  ),    
  ),
登入後複製

然後造訪url 你的應用程式/index.php?r=gii 存取gii,開啟以後選擇,左邊選單的Module Generator 選項。你將會看到下面的畫面

在 Module ID 輸入模組的名稱,我在這裡輸入 admin ,然後點擊 Preview 按鈕。如下圖所示,它向你展示了所有將會被產生的文件,允許你在新建之前預覽他們 :

然後點擊 Generate 按鈕,來產生所有文件。因為 Web 伺服器進程需要寫入權限,所以確保你的 /protected 資料夾對於該應用程式是可寫入的。

設定使用這個模組

我們對主設定檔protected/config/main.php 進行配置,如下的程式碼需要被修改,新增了'admin' :

 &#39;modules&#39;=>array(    
 &#39;gii&#39;=>array(    
  &#39;class&#39;=>&#39;system.gii.GiiModule&#39;,    
&#39;password&#39;=>&#39;你的密码&#39;,    
 ),    
 &#39;admin&#39;,    
),
登入後複製

儲存上面的修改後後,我們的新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 到公用目錄下網站目錄/assets

3、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(&#39;application.modules.admin.assets&#39;));    
 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 中:

配置文件中也可以及添加对模块中属性初始化的参数例如:

 &#39;modules&#39;=>array(&#39;admin&#39;=>array(&#39;web_url&#39;=>&#39;www.phpernote.com&#39;),
登入後複製

对应在 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框架上有更多的收获。

相关推荐:

简单介绍Yii2的使用场景

推荐10款安装Yii源码(收藏)

PHP的Yii框架中的属性Property

yii2框架的下载安装图文教程

Yii2利用表单进行文件上传的实例讲解

以上是Yii framework框架模組開發的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板