2012-01-25 27 views
0

Zend_Frameworkに奇妙な問題がありました。デフォルト以外のモジュールからフォームやモデルを読み込むことはできません。ZFがモデルとフォームをモジュールから自動ロードしない

私は(ユーザーモジュールで)私のコントローラで次のコード行を持って

$myAccountModel = new User_Model_MyAccount(); 

しかし私が得るすべては、私は、ファイルのパスとクラス名をチェックして、エラー

Fatal error: Class 'User_Model_MyAccount' not found in F:\My Webs\freedate\application\modules\user\controllers\MyAccountController.php on line 13 

ですすべてが正しいです、私はこのプロジェクトのセットアップを私が過去に行った他のZFプロジェクトと似ていますが、唯一の違いはLAMPサーバーではなくWAMPサーバー上にあることです。

デフォルトのモジュールからモデルまたはフォームを読み込もうとすると、これらのコード行がうまくロードされず、エラーは発生せず、クラスも正常に読み込まれます。誰かがここで何が起こっているかのよういくつかの光を当てることができれば、私は今、レンガの壁を直撃しているよう

$loginForm = new Form_Login(); 
$loginModel = new Model_Login(); 

それが最も参考になります!

私はZF 1.11.11 btwを使用しています。

感謝

ギャリー

[EDIT]

私はエラーが表示されなくなり、以下の行を追加する場合、これは間違いなくZFオートローダとprobelmです。私はapplication.iniで

require_once(APPLICATION_PATH . '/modules/user/models/MyAccount.php'); 

私は

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

を持っており、私のbootstrap.phpの中で私が

/** * Initialize autoloader 
* @return Zend_Loader_Autoloader 
*/  
protected function _initAutoload() {  
    return Zend_Loader_Autoloader::getInstance(); 
} 

/** * Initialize module autoloader 
* @return Zend_Application_Module_Autoloader 
*/ 
protected function _initModuleAutoload() { 
    $modelLoader = new Zend_Application_Module_Autoloader(array(
      'namespace' => '', 
      'basePath' => APPLICATION_PATH . '/modules/default')); 

    return $modelLoader; 
} 

答えて

2

を持っているあなたは、特定のモジュールに空Module_Bootstrapを追加しようとしたことがありますか?以下のようなので:一度これを行う

<?php 

class User_Bootstrap extends Zend_Application_Module_Bootstrap 
{// nothing in here except you really want to do anything here ;)} 

、あなたは、ブートストラップから_initAutoload()_initModuleAutoload()メソッドを削除することができます。モジュールブートストラップを作成すると、Zend_Application_Module_Autoloaderがデフォルトで自動的に作成されます。

がそれだったThe Module Resource Autoloader

+0

を参照してください、私はモジュールへのブートストラップファイルを追加するのを忘れ。あなたの救世主に感謝します。 – Garry

+0

ブートストラップから_initAutoload()を削除できましたが、_initModuleAutoload()ではなく、ACLファイル(致命的なエラー:Class 'Model_FreedateAcl'が見つかりません)が見つからなかったため、アプリ全体が削除されました。 – Garry

+0

これを防ぐには、application.iniファイルに 'appnamespace'を設定し、モジュールの一部ではないすべてのクラスに接頭辞を付ける必要があります。そのため、' Model_FreedateAcl'ではなく 'Application_Model_FreedateAcl'となるかもしれません。あるいは、あなたのように名前空間のないローダを設定することもできます。 – drew010