Zendは、mvc のコントローラー アクション ヘルパーを に配置することを推奨/application/controllers/helpers
しています。それはそれらを使用する正しい方法ですか?
bootstrap/application.ini でそれらをインスタンス化する必要がありますか?
私のヘルパーには直接アクションがあり、 と呼ばれControllers_Helpers_Redirectlogin
ます。
助けてくれてありがとう、ありがとう!
Zendは、mvc のコントローラー アクション ヘルパーを に配置することを推奨/application/controllers/helpers
しています。それはそれらを使用する正しい方法ですか?
bootstrap/application.ini でそれらをインスタンス化する必要がありますか?
私のヘルパーには直接アクションがあり、 と呼ばれControllers_Helpers_Redirectlogin
ます。
助けてくれてありがとう、ありがとう!
推奨事項に従うことは良いことです。デフォルトでは、参照したマニュアルページに次のように記載されていても、デフォルトで推奨パスを参照するようにオートローダーが設定されているようには見えません。
controllers/helpers/ : これらのディレクトリにはアクション ヘルパーが含まれます。アクション ヘルパーは、デフォルト モジュールの" Controller_Helper_ " または他のモジュールの " _Controller_Helper "として名前空間が設定されます。
Bootstrap.php
これを回避するには、これをファイルに追加して、参照する追加のパスを HelperBroker に示唆するだけです。
// for default module in a non-modular structure
Zend_Controller_Action_HelperBroker::addPath(
APPLICATION_PATH . '/controllers/helpers',
'Controller_Helper'
);
// for default module if using modular structure
Zend_Controller_Action_HelperBroker::addPath(
APPLICATION_PATH . '/modules/default/controllers/helpers',
'Controller_Helper'
);
// for "Admin" module when using a modular structure
Zend_Controller_Action_HelperBroker::addPath(
APPLICATION_PATH . '/modules/admin/controllers/helpers',
'Admin_Controller_Helper'
);
また、オートローダが正しく機能するためには、Controller_Helper_RedirectLogin
ではなくクラスに名前を付ける必要がありますControllers_Helpers_RedirectLogin
。通常、オートロードされたクラスは複数形を削除します (例:models/User.php
へのマップclass Model_User
)。
application.ini
EDIT:ファイル内のヘルパーパスについてもヘルパーブローカーに伝えることができます。例:
; non-modular structure
resources.frontController.actionHelperPaths.Controller_Helper = APPLICATION_PATH "/controllers/helpers"
; "admin" module in a modular structure
resources.frontController.actionHelperPaths.Admin_Controller_Helper = APPLICATION_PATH "/modules/admin/controllers/helpers"