デフォルトのモジュールでは正常に動作するビュー ヘルパーがレイアウトで呼び出されていますが、別のモジュールでは例外が発生します。
次のように設定して、すべてのモジュールでデフォルトのレイアウトを使用するように app.ini を変更しました。
resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/"
ここで検索すると、Google は別の app.ini 設定を提供して、すべてのモジュールのビュー ヘルパー パスを追加しました。
resources.view.helperPath.Zend_View_Helper = APPLICATION_PATH "/views/helpers"
ただし、問題を修正する代わりに、その追加設定により Zend Exception が WSOD になります。
その 2 番目の app.ini 設定がないと、レイアウトが表示され、次の例外が発生します。
Plugin by name 'AutoScript' was not found in the registry; used paths: Admin_View_Helper_: /Applications/XAMPP/xamppfiles/htdocs/dad/application/modules/admin/views/helpers/ Zend_View_Helper_: Zend/View/Helper/:./views/helpers/
helperPath.Zend_View_Helper の ini 設定を使用すると、次のような WSOD が得られます。
Fatal error: Uncaught exception 'Zend_Loader_PluginLoader_Exception' with message 'Plugin by name 'AutoScript' was not found in the registry; used paths: Zend_View_Helper_: Zend/View/Helper/:./views/helpers/'
APPLICATION_PATH 値をプレフィックスとして使用する必要があるにもかかわらず、プラグイン ローダーが AutoScript.php ファイルの public/views/helpers/ を探しているようです。
私のレイアウト呼び出しは次のようになります
<?php $this->AutoScript(); ?>
AutoScript.php ファイルのクラスは application/views/helpers/ で定義されています
class Zend_View_Helper_AutoScript extends Zend_View_Helper_Abstract {
public function AutoScript() {...}
}
私の現在の修正は、AutoScript.php ファイルを application/views/helpers から modules/admin/views/helpers にコピーすることです。これにより、問題は修正されますが、ファイルが複製されます。私は何が欠けていますか?ブートストラップで _initView 関数を作成して、このビュー ヘルパー パスをプログラムで追加する必要がありますか?