ホームページ >php教程 >php手册 >Zend フレームワークのマルチモジュール マルチレイアウト構成

Zend フレームワークのマルチモジュール マルチレイアウト構成

WBOY
WBOYオリジナル
2016-06-21 08:55:25917ブラウズ

使用中にこの種の問題に遭遇する人は多いと思いますが、zend フレームワークはバージョン 1.11 になりましたが、インターネット上の多くの情報はまだ古いバージョンであるため、ここでは最新のバージョン 1.11 を例に挙げて簡単に紹介します。 Zend フレームワークを使用してモジュール式アプリケーションを作成する方法。今後のフレームワークのバージョンアップにより、内容が古くなってしまう場合がございますので、最新の取扱説明書を適時ご参照ください。

1.準備

まず、Web サーバーと PHP をデプロイし、最新バージョンの zend フレームワークをダウンロードし、オリジナルの zend フレームワーク プロジェクトを作成し、デフォルトのアクションにアクセスできると仮定します。 zend フレームワーク ツールを使用してプロジェクトを作成できます。具体的な操作については、「zend フレームワークを使用したプロジェクトの作成」を参照してください。もちろん、フォルダーやファイルを自分で手動で作成することもできます。zend フレームワークが推奨するプロジェクトのディレクトリ構造を参照してください。

いくつかの重要なデフォルト ディレクトリを簡単に見てみましょう。
1 つ目は public で、プログラムのエントリ ポイントのindex.php を保存するだけでなく、画像、CSS、JavaScript ファイルなども保存できます。
2 番目はライブラリです。これは、独自に定義したクラス ライブラリやサードパーティのクラス ライブラリを含む、いくつかのクラス ライブラリを保存するために使用されます。
次に、単体テストなどのテスト ファイルを保存するために使用される te​​st があります。
最後に、これは、これから説明するアプリケーションに最も密接に関連するディレクトリでもあります。アプリケーション ディレクトリに入ると、次のディレクトリがあります。
configs: 設定ファイルを保存するには、通常、メインの設定ファイル application.ini があります。
controllers: デフォルトの IndexController.php などのコントローラ。
モデル: ビジネス ロジック、データ モデル、その他のファイルを保存します。
ビュー: ビュー レイヤーのスクリプト (通常は接尾辞として .phtml が付きます)。
モジュール: ツールのデフォルトを使用して自動的に生成されます。オプションがあり、このディレクトリはありません。手動で追加する必要があります。モジュールには、admin などのモジュール名にちなんだ名前の複数のフォルダーを含めることができます。デフォルトでは、その下のフォルダー構造はアプリケーション ディレクトリと似ており、コントローラー、モデル、ビューなどのディレクトリも含めることができます。 、など。モジュールの下のコントローラーの下にあるファイルのクラス名には、モジュール名を付ける必要があることに注意してください。たとえば、application/modules/admin/controllers/IndexController.php のクラス名は Admin_IndexController です。

自分で作成したクラス ライブラリ (名前空間が Rockux など) またはサードパーティのクラス ライブラリをプロジェクトで便利に使用する必要がある場合は、application.ini ファイルを変更して次の行を追加できます。

コードをコピーします コードは次のとおりです:


autoloaderNamespaces.rockux = "Rockux_"
autoloaderNamespaces.thirdParty = "ThirdPartyLibrary_"


もちろん、必要に応じてさらにいくつか追加できますが、最後のアンダースコアに注意してください。 。

2. モジュールを作成します
次に、次のディレクトリに管理モジュールを作成します:
application/modules/admin/controllers
application/modules/admin/モデル
application/modules/admin/views
application/modules/admin/views/scripts
application/modules/admin/views/helpers
application/modules/admin/views/filters
次のファイルを作成します:
application/modules/admin/controllers/IndexController.php (クラス名 Admin_IndexController)
application/modules/admin/views/scripts/index/index.phtml

Except新規 モジュール ファイルに加えて、構成ファイル application.ini も変更し、次の行があれば削除する必要があります。

コードをコピー コードは次のとおりです:


resources.frontController.controllerDirectory = APPLICATION_PATH"/controllers"


次の行を追加します:

コードをコピーします コードは次のとおりです:


resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.frontController.moduleControllerDirectoryName = "controllers"
resources.frontController.defaultModule = "default"
resources.modules[]


このようにして、http://localhost/admin にアクセスすると、admin モジュールによって出力されたコンテンツを確認できるようになります。
モジュールの強力な機能を最大限に活用したい場合は、モジュールの起動ファイル、Bootstrap.php も追加する必要があります。これにより、各モジュールでクラス リソース、モデル、フィルター、ヘルパーなどを便利に使用できるようになります。次のコードを使用して admin の下に新しい Bootstrap.php を作成します:

コードをコピーします コードは次のとおりです:


クラス Admin_Bootstrap は Zend_Application_Module_Bootstrap を拡張します
{
}


そして次のメソッドを application/Bootstrap.php ファイルに追加します:

コードをコピーします コードは次のとおりです:


保護された関数 _initAppAutoload()
{
$autoloader = new Zend_Application_Module_Autoloader(array(
'namespace' => 'App',
'basePath' => dirname(__FILE__),
));
$autoloader を返す
}


コードをコピー コードは次のとおりです:


resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts"
resources.layout.layout = "layout"
admin.resources.layout.layout = "admin"


2 番目に、さまざまなモジュールのレイアウト スクリプト ファイルがそれぞれのモジュール フォルダーに保存されます。
アプリケーションの下に次のディレクトリとファイルを作成できます:
application/layouts/scripts/layout.phtml
application/ modules/admin/layouts/scripts/layout.phtml

構成ファイル application.ini に次の行を追加します。

コードをコピーコードは次のとおりです:


resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts"
resources.layout.layout = "layout"
admin.resources.layout.layoutPath = APPLICATION_PATH "/modules/admin/layouts/scripts"


最初のタイプであっても 2 番目のタイプであっても、この時点で http://localhost/admin にアクセスすると、システムが予想される admin.phtml をレイアウト ファイルとして使用せず、デフォルトの admin.phtml を使用していることがわかります。レイアウト.phtml 。これは、構成の管理行がシステムがデフォルトで処理できる有効な構成ではないため、自分で処理する必要があるためです。

新しいファイルを作成します: library/Rockux/Controller/Action/Helper/LayoutLoader.php,

最初のケースのコードは次のとおりです:

コード をコピーします。コードは次のとおりです:


class rockux_controller_action_helper_layoutloader extends zend_controller_action_action_action_helper_abstract
{

public function predispatch()
{
$ bootstrap = $ this-> getactionController()$config = $bootstrap->getOptions();
$module = $this->getRequest()->getModuleName(); $ module]['resources']['layout']['layout'])) {
$layoutScript = $config[$module]['resources']['layout']['layout']; 🎜 >$this->getActionController()
->getHelper('layout')
->setLayout($layoutScript)
}
}

}


2 番目のケースのコードは次のとおりです:



コードをコピーします

コードは次のとおりです: class rockux_controller_action_helper_layoutloader extends zend_controller_action_action_action_helper_abstract

{


public function predispatch()
{
$ bootstrap = $ this-> getactionController()$config = $bootstrap->getOptions();
$module = $this->getRequest()->getModuleName(); $ module]['resources']['layout']['layoutPath'])) {
$layoutPath =
$config[$module]['resources']['layout']['layoutPath' ] ;
$this->getActionController()
->getHelper('layout')
->setLayoutPath($layoutPath)
}
}
}


次に、application/Bootstrap.php に追加する必要があります


コードをコピーします

コードは次のとおりです:

保護された関数 _initLayoutHelper() { $this->bootstrap('frontController');

$layout = Zend_Controller_Action_HelperBroker::addHelper(

new Rockux_Controller_Action_Helper_LayoutLoader());


もう一度 http://localhost/admin にアクセスすると、指定されたレイアウト ファイルが使用されていることが確認できるはずです。
特定のコントローラーに特定のレイアウトを使用したい場合は、コントローラーの init() メソッドに次のコードを追加できます:


コードをコピー

次のようにコード化します:

$layout = Zend_Layout::getMvcInstance(); $layout->setLayout('layout_special');




声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。