ホームページ >バックエンド開発 >PHPチュートリアル >Yii フレームワークモジュール開発分析_PHP チュートリアル
yii によって生成された Web アプリに従って開発された場合、少し大きなプロジェクト。すべてのコントローラーはコントローラー フォルダーの下に配置され、すべてのモデルはモデル フォルダーの下に配置されます。n 個のコントローラーと n 個の複数のモデルがある場合、この場合のコードの保守は非常に面倒なプロセスになります。この状況を回避するために、Yii はモジュールのディレクトリ構造を提供します。
モジュール (モジュール) は、ビュー、コントローラー、その他のコンポーネントを含む独立したユニットです。アプリケーションとの違いは、モジュールをアプリケーションのモジュール ディレクトリに個別に保存できないことです。
プロジェクトは n 個の複数のモジュールに分割でき、各モジュールには独自のコントローラーとモデルがあります。このような組織構造により、開発と管理がより便利かつ簡潔になります。
YII のモジュールは非常に柔軟であり、モジュールにはサブモジュールを含めることができます。理論上、モジュールは無限にネストできます。
モジュールのディレクトリ構造(ここでは、以下で生成されるディレクトリ構造を説明として使用します)
modulesモジュール格納ディレクトリ
└── admin はモジュールです。モジュールの名前はディレクトリの名前に対応しており、一意です。ルーティングのモジュールIDでもあります
§── コンポーネント モジュールで使用されるコンポーネント
§── コントローラーにはコントローラーも含まれます
│ └── DefaultController.php デフォルトコントローラー
§── メッセージの国際化
§── モデル モデル クラス ファイル
§── AdminModule.php モジュールクラスファイル
└── ファイルを閲覧
§── デフォルトのデフォルトビュー
│ §──index.php ビューファイル
└── レイアウトにはレイアウト ファイルが含まれます
基本的なディレクトリ構造は上記の通りですが、もちろん自分でカスタマイズしたものを追加することもできます。
モジュールの作成方法 (ここでは、yii に付属の gii ジェネレーターを使用してモジュールを作成します)
yii に付属の gii ジェネレーターを使用して基本構造を作成します。 gii を有効にする方法は、アプリケーションの config/main.php ファイル内の次の内容を変更することです。 リーリー
次に、url your application/index.php?r=gii にアクセスし、gii を開き、左側のメニューで [モジュール ジェネレーター] オプションを選択します。次の画面が表示されます
「モジュール ID」にモジュールの名前を入力し、ここに「admin」と入力して、「プレビュー」ボタンをクリックします。以下に示すように、生成されるすべてのファイルが表示され、作成する前にプレビューすることができます:
次に、「生成」ボタンをクリックしてすべてのファイルを生成します。 Web サーバー プロセスには書き込みアクセスが必要なため、/protected フォルダーがアプリケーションから書き込み可能であることを確認してください。
このモジュールを使用するように設定します
メインの設定ファイル protected/config/main.php を設定します。次のコードを変更して「admin」を追加する必要があります: リーリー
上記の変更を保存すると、新しい管理モジュールを使用できるようになります。作成したモジュールには次の場所からアクセスできます:
yourapp/index.php?r=admin/default/index モジュール内で
レイアウトを使用
index.php?r=admin/default/index にアクセスすると、モジュールがアプリケーションの下で /protected/views /layouts/main.php ファイルを使用していることがわかり、/protected/modules を使用することもできます。 /admin/ views/layouts /main.php ファイルにより、管理モジュールが独立したレイアウト ビューを持つことができます。私たちは次の場所で見つけることができます:
protectedmodulesadmincontrollersDefaultController.php 次のコードを追加します。
public $layout='application.modules.admin.views.layouts.main';
/protected/views/layouts/main.php から /protected/modules/admin/views/layouts/ にコピーし、モジュールが独立したレイアウト ビューを持つように少し変更します。
モジュールでのアセットの使用
添加新的模块时,一般会包含图像文件,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; public function getAssetsUrl(){ if($this->_assetsUrl===null) $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;