目次
1.準備
ホームページ バックエンド開発 PHPチュートリアル Zend フレームワーク マルチモジュール マルチレイアウト構成_PHP チュートリアル

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

Jul 21, 2016 pm 03:32 PM
framework zend 使用 存在する レイアウト モジュール 会う 構成 質問

使用中にこの種の問題に遭遇する人は多いと思いますが、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')
-&gt ;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 までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

CrystalDiskmarkとはどのようなソフトウェアですか? -crystaldiskmarkの使い方は? CrystalDiskmarkとはどのようなソフトウェアですか? -crystaldiskmarkの使い方は? Mar 18, 2024 pm 02:58 PM

CrystalDiskmarkとはどのようなソフトウェアですか? -crystaldiskmarkの使い方は?

LinuxシステムにおけるGDMの動作原理と設定方法 LinuxシステムにおけるGDMの動作原理と設定方法 Mar 01, 2024 pm 06:36 PM

LinuxシステムにおけるGDMの動作原理と設定方法

foob​​ar2000のダウンロード方法は? -foobar2000の使い方 foob​​ar2000のダウンロード方法は? -foobar2000の使い方 Mar 18, 2024 am 10:58 AM

foob​​ar2000のダウンロード方法は? -foobar2000の使い方

NetEase メールボックス マスターの使用方法 NetEase メールボックス マスターの使用方法 Mar 27, 2024 pm 05:32 PM

NetEase メールボックス マスターの使用方法

Baidu Netdisk アプリの使用方法 Baidu Netdisk アプリの使用方法 Mar 27, 2024 pm 06:46 PM

Baidu Netdisk アプリの使用方法

Linux Bashrc の機能、構成、使用法を理解する Linux Bashrc の機能、構成、使用法を理解する Mar 20, 2024 pm 03:30 PM

Linux Bashrc の機能、構成、使用法を理解する

BTCC チュートリアル: BTCC 取引所で MetaMask ウォレットをバインドして使用する方法は? BTCC チュートリアル: BTCC 取引所で MetaMask ウォレットをバインドして使用する方法は? Apr 26, 2024 am 09:40 AM

BTCC チュートリアル: BTCC 取引所で MetaMask ウォレットをバインドして使用する方法は?

iOS 17.4の新しい高度な機能「盗難デバイス保護」の使い方を教えます iOS 17.4の新しい高度な機能「盗難デバイス保護」の使い方を教えます Mar 10, 2024 pm 04:34 PM

iOS 17.4の新しい高度な機能「盗難デバイス保護」の使い方を教えます

See all articles