2012-01-11 5 views
0

私はZend Frameworkモジュラーアプリケーションをセットアップしました。私のモジュールの1つは「フロントエンド」と呼ばれ、デフォルトのモジュールです(resources.frontController.defaultModule = "frontend"は私の設定ファイルにあります)。Zend Frameworkがモジュラーアプリケーションでフォームを見つけられない

私は、フォーム、 Frontend_Form_PropertySearch/application/modules/frontend/forms/PropertySearch.phpに位置しており、次のように私のコントローラでそれを使用しようとしている

:しかし、私は

public function searchAction() 
{ 
    $form = new Frontend_Form_PropertySearch(); 

    $form->submit->setLabel('Search'); 
    $this->view->form = $form; 
} 

を取得しています次のエラー:

Fatal error: Class 'Frontend_Form_PropertySearch' not found in /Users/Martin/Dropbox/Repositories/realestatecms/application/modules/frontend/controllers/PropertiesController.php on line 17

どこが間違っていますか?

+0

あなたのappnamespaceはFrontendですか、それとも別のものですか? [Application Autoloading](http://framework.zend.com/manual/en/zend.application.core-functionality.html#zend.application.core-functionality.bootstrap-bootstrap)を参照してください。 – drew010

+0

'appnamespace'はまだ設定されています私の設定ファイルの 'アプリケーション'。 –

+0

その場合、BartekRの最初の方法が有効です。デフォルトのZend Applicationオートローダーマッピングを使用している場合は、 'resourceTypes'配列を削除することで短縮できます。 ZF1のようにアプリケーションのブートストラップに追加するだけで、現在のモジュールに関係なくすべてのブートストラップが実行されます。 – drew010

答えて

2

解決策の1つは、ファイルapplication/modules/frontend/Bootstrap.phpを追加し、この(私のプロジェクトの一つで同様の作業を)置くことができます:

<?php 
class Frontend_Bootstrap extends Zend_Application_Module_Bootstrap 
{ 
    protected function _initAutoload() 
    { 
     $autoloader = new Zend_Application_Module_Autoloader(array(
      'namespace' => 'Frontend_', 
      'basePath' => APPLICATION_PATH .'/modules/frontend', 
      'resourceTypes' => array (
       'form' => array(
        'path' => 'forms', 
        'namespace' => 'Form', 
       ), 
       'model' => array(
        'path' => 'models', 
        'namespace' => 'Model', 
       ), 
      ) 
     )); 
     return $autoloader; 
    } 
} 

別の解決策を、akrabatによって記載されているように:http://akrabat.com/zend-framework/bootstrapping-modules-in-zf-1-8/

// file application.ini 
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules" 
resources.modules[] = "" 

File: /application/modules/frontend/Bootstrap.php 

<?php 
class Frontend_Bootstrap extends Zend_Application_Module_Bootstrap 
{ 

} 

2つ目をドキュメントに記載されているデフォルトのリソースオートローダを使用します。http://framework.zend.com/manual/zh/zend.loader.autoloader-resource.html#zend.loader.autoloader-resource.module

0

iniファイルcontai nsこれらの行

resources.frontController.moduleDirectory = APPLICATION_PATH "/path/to/your/modules" 
resources.modules[] = 
関連する問題