使用中にこの種の問題に遭遇する人は多いと思いますが、zend フレームワークはバージョン 1.11 になりましたが、インターネット上の多くの情報はまだ古いバージョンであるため、ここでは最新のバージョン 1.11 を例に挙げて簡単に紹介します。 Zend フレームワークを使用してモジュール式アプリケーションを作成する方法。今後のフレームワークのバージョンアップにより、内容が古くなってしまう場合がございますので、最新の取扱説明書を適時ご参照ください。
まず、Web サーバーと PHP をデプロイし、最新バージョンの zend フレームワークをダウンロードし、オリジナルの zend フレームワーク プロジェクトを作成し、デフォルトのアクションにアクセスできると仮定します。 zend フレームワーク ツールを使用してプロジェクトを作成できます。具体的な操作については、「zend フレームワークを使用したプロジェクトの作成」を参照してください。もちろん、フォルダーやファイルを自分で手動で作成することもできます。zend フレームワークが推奨するプロジェクトのディレクトリ構造を参照してください。
いくつかの重要なデフォルト ディレクトリを簡単に見てみましょう。
1 つ目は public で、プログラムのエントリ ポイントのindex.php を保存するだけでなく、画像、CSS、JavaScript ファイルなども保存できます。
2 番目はライブラリです。これは、独自に定義したクラス ライブラリやサードパーティのクラス ライブラリを含む、いくつかのクラス ライブラリを保存するために使用されます。
次に、単体テストなどのテスト ファイルを保存するために使用される test があります。
最後に、これは、これから説明するアプリケーションに最も密接に関連するディレクトリでもあります。アプリケーション ディレクトリに入ると、次のディレクトリがあります。
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_"
コードをコピー コードは次のとおりです:
resources.frontController.controllerDirectory = APPLICATION_PATH"/controllers"
コードをコピーします コードは次のとおりです:
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.frontController.moduleControllerDirectoryName = "controllers"
resources.frontController.defaultModule = "default"
resources.modules[]
コードをコピーします コードは次のとおりです:
クラス Admin_Bootstrap は Zend_Application_Module_Bootstrap を拡張します
{
}
コードをコピーします コードは次のとおりです:
保護された関数 _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"
コードをコピーコードは次のとおりです:
resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts"
resources.layout.layout = "layout"
admin.resources.layout.layoutPath = APPLICATION_PATH "/modules/admin/layouts/scripts"
コード をコピーします。コードは次のとおりです:
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');