ホームページ >バックエンド開発 >PHPチュートリアル >Yii フレームワークモジュール開発分析_PHP チュートリアル

Yii フレームワークモジュール開発分析_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 09:54:23858ブラウズ

Yii フレームワーク モジュール開発分析

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 を開き、左側のメニューで [モジュール ジェネレーター] オプションを選択します。次の画面が表示されます

Yii framework框架之模块开发分析-生成目录

「モジュール ID」にモジュールの名前を入力し、ここに「admin」と入力して、「プレビュー」ボタンをクリックします。以下に示すように、生成されるすべてのファイルが表示され、作成する前にプレビューすることができます:

Yii framework框架之模块开发分析-预览生成目录

次に、「生成」ボタンをクリックしてすべてのファイルを生成します。 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;

您可能感兴趣的文章

  • php用header()实现文件下载,下载的文件提示被破坏不能打开的解决办法
  • CuteFTP连接ftp服务器时弹出“遇到无效的参数”错误的解决办法
  • php smarty中文截取插件开发示例
  • 关于使用in_array() foreach array_search() 查找数组是否包含时的性能对比
  • linux chmod(文件或文件夹权限设定)命令参数及用法详解
  • iframe 子页面如何操作父页面元素
  • javascript实现刷新iframe的方法的总结
  • array_walk 和 foreach, for 的效率的比较,php性能优化

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/997441.htmlTechArticleYii framework框架之模块开发分析 一个稍微大点的项目,如果按照yii生成的webapp进行开发。所有的controller放到controllers文件夹下,所有的mode...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。