2012-02-21 12 views
3

私のモジュールが動作しているが、モジュールのブーストラップがロードされていないという非常に奇妙なケースがあります。ここでZend Moduleブートストラップがロードされない

は、モジュールの自動ロードのための私のapplication.ini内のセグメントである:ここで

resources.frontController.moduleDirectory = APPLICATION_PATH "/modules" 
resources.modules[] = "" 

は、ブートストラップです:ここで私のモジュールの

protected function _initAutoload() 
    { 
     $autoloader = new Zend_Application_Module_Autoloader(array(
      'namespace' => 'User_', 
      'basePath' => APPLICATION_PATH .'/modules/user', 
      'resourceTypes' => array (
      'model' => array(
       'path' => 'models', 
       'namespace' => 'Model', 
       ) 
      ) 
     )); 
    } 

構造

Application 
--modules 
----user 
------config/ 
------controllers/ 
------models/ 
------views/ 
------Bootstrap.php 
----admin 

問題User_Bootstrapがロードされていないことです。なZend_Registry ::取得(「デバッグ」)任意のコントローラ上を行うことにより

<?php 

class User_Bootstrap extends Zend_Application_Module_Bootstrap 
{ 

    protected function _initAutoload() 
    { 
     Zend_Registry::set('debug', 'haha'); 
    } 
} 

、それがキーは、モジュールのブートストラップに設定されたことを認識しません。実際、User_Bootstrapの構文エラーは機能しません。

なぜUser_Bootstrapが自動ロードされていないのか分かりません。これは私が5時間勉強していて、このケースをカバーするブログの投稿を手に入れることができないので私を狂わせてしまっています...

私のモデルとコントローラクラスについては、オートロードがうまく動作しています。

答えて

7

次のことを試してみてください...

  1. 価値_initAutoload()方法を取り外しhttp://framework.zend.com/manual/en/zend.application.available-resources.html#zend.application.available-resources.modules

  2. を参照してください

    ; lose the quotes 
    resources.modules[] = 
    

    使用するようにapplication.iniファイルを変更しますあなたのアプリケーションBootstrapクラスから。モジュールのブートストラップは、自動的にあなたのUser_クラス

+1

+1。それに私を打つ。いつものように、いい仕事。 ;-) –

1

わかりにくいかもしれませんが、不適切な場合もあります。 --Modulesはあなたの構造にありますが、それでも/modulesと言います。これらは大文字と小文字を区別する

私はそれが簡単だと思います。

メインブートストラップの関数名をモジュールブートストラップに複製しないでください。私がZF 1.xで知っている限り、すべてのブーラップがすべての呼び出しを処理します。メインのブーストラップの_initAutoloadが、モジュールブートストラップ。

は_initModuleAutoloadのようないくつかの異なったあなたの関数を呼び出してみてください。
は、少なくともショット:)

+0

ごめんなさい、私はタイプミスをしました。それは私のディレクトリの小文字です。モジュール自体が機能しているので問題になるはずはないと思います。すべてのコントローラー、モデル、およびビューをロードしています。ロードされていないのはブートストラップだけです。 – shiva8

+0

@DylanSumiskum編集をチェックしてください。可能な解決策があるかもしれません。 – RockyFord

0

のリソースローダを作成するようあなたがのapplication.ini設定ファイルにfrontControllerディレクトリを無効にしようとしたことがあり、これを必要としませんか?この行を削除/コメントしてみてください。

resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"

関連する問題