ホームページ  >  記事  >  バックエンド開発  >  Zend フレームワーク マルチモジュール マルチレイアウト構成_PHP チュートリアル

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

WBOY
WBOYオリジナル
2016-07-21 15:32:01772ブラウズ

使用中にこの種の問題に遭遇する人は多いと思いますが、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 などのコントローラ。ロジック、データ モデル、およびその他のファイル。
views: ビュー レイヤー スクリプト。通常は接尾辞として .phtml が付きます。
modules: ツールのデフォルト オプションを使用して自動的に生成され、このディレクトリはありません。追加する必要があります。手動で。モジュールには、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/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

新しいモジュール ファイルの作成に加えて、構成ファイル 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 にアクセスすると、管理モジュールの内容の出力が表示されるはずです。
モジュールの強力な機能を最大限に活用したい場合は、モジュールの起動ファイル - Bootstrap.php も追加する必要があります。これにより、各モジュールでクラス リソース、モデル、フィルター、ヘルパーなどを便利に使用できるようになります。次のコードを使用して管理者の下に新しいbootstrap.phpを作成します:


コピーコードコードは次のとおりです。 Bootstrap.php ファイル メソッド:
コードをコピーします

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

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

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

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

次に、さまざまなモジュールのレイアウト スクリプト ファイルがそれぞれのモジュール フォルダーに保存されます
アプリケーションの下に次のディレクトリとファイルを作成できます:
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"

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

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

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

クラス Rockux_Controller_Action_Helper_LayoutLoader は Zend_Controller_Action_Helper_Abstract を拡張します
{

パブリック関数 preDispatch()
{
$bootstrap = $this->getActionController()
->getInvokeArg('ブートストラップ');
$config = $bootstrap-> getOptions();
$module = $ this->getRequest()->getModuleName();
if (isset($config[$module]['resources']['layout']) ) {
$layoutScript = $config[ $module]['resources']['layout']['layout']
$this->getActionController()
->getHelper('layout')
-> ;setLayout($layoutScript);
}
}

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

コードをコピーします コードは次のとおりです:
class Rockux_Controller_Action_Helper_Layou tLoader は Zend_Controller_Action_Helper_Abstract を拡張します
{

パブリック関数 preDispatch()
{
$bootstrap = $ this->getActionController()
->getInvokeArg('bootstrap');
$config = $bootstrap->getOptions(); $this->getRequest()->getModuleName();
if (isset($config[$module]['resources']['layout']['layoutPath'])) {
$layoutPath =
$ config[$module]['resources']['layout'] ['layoutPath'];
$this->getActionController()
->getHelper('layout')
->setLayoutPath($layoutPath);
}
}
}


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


コードをコピーします コードは次のとおりです:
protected function _initLayoutHelper()
{ $これ- >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');

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/322914.html技術記事多くの人は使用中に何らかの問題に遭遇するでしょう。そして、zend フレームワークはバージョン 1.11 になりました。インターネット上の多くの情報はまだ古いバージョンです。そこで私はここにいます...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。