2012-04-03 15 views
1

私のZF Appでは、アクションヘルパーをロードできないという問題があります。エラーメッセージは次のとおりです。私は、モジュールにヘルパーを登録しているZend Frameworkアプリケーションのオートローダーでヘルパークラスが見つかりません

application 
    modules 
     weather 
      controllers 
      helpers 

:私のZFアプリのレイアウトは、私は次のような構造を持つモジュールを使用しています

を見つけていない名前サンシャインによって

アクションヘルパーここで

application -> modules -> weather -> Bootstrap.php 

に配置されているブートストラップコード

です3210
<?php 
class Weather_Bootstrap extends Zend_Application_Module_Bootstrap 
{ 

    protected function _initActionHelperBrokers() 
    { 
     Zend_Controller_Action_HelperBroker::addPath('controllers/helpers', 'Weather_Controllers_Action_Helper_'); 
    } 
} 


<?php 
class Weather_Controller_Action_Helper_Sunshine extends Zend_Controller_Action_Helper_Abstract 
{ 

    public function getSunrise() 
    { 
     return "06:00"; 
    } 

} 

<?php 
class Weather_ForecastsController extends Zend_Controller_Action 
{ 

    protected function getForecasts($date) 
    { 
     $sunrise = $this->_helper->Sunshine->getSunrise(); 
     // tbc 
    } 

ここは間違っていますか?

EDIT:示唆したように、ブートストラップにヘルパをフルパスで追加しようとしましたが、同じエラーが発生しました。

答えて

0

addPathメソッドでは、ヘルパーディレクトリへのパス全体が必要です。以下のようなもののように変更します。

Zend_Controller_Action_HelperBroker::addPath(APPLICATION_PATH . '/modules/weather/controllers/helpers', 'Weather_Controllers_Action_Helper_'); 

また、あなたもあなたのapplication.ini経由のパスを追加することができます。

resources.frontController.actionhelperpaths.Weather_Controllers_Action_Helper = APPLICATION_PATH "/modules/weather/controllers/helpers" 
+0

フム、私は完全なパスでそれを試してみましたが、結果は同じでした。他に何が間違っていますか? – loony

+0

パスが実際にhelperBrokerに登録されていることを確認してください。あなたの 'getForecasts()'メソッドに 'Zend_Debug :: dump($ this - > _ helper)'を追加して、パスが登録されているかどうかを確認してください(正しい) – Pieter

+0

モジュールのブートストラップが実行されていないことがわかりました。 addPathメソッドを一般的なブートストラップに置き、デバッガで実際に実行されていることを確認しました。それはそうです。だから私はデバッグメッセージを手に入れましたが、プラグインレジストリにパスが正しく追加されているのを見ても、デバッグメッセージにはどこかに表示されません。 – loony

関連する問題