1

モジュールでフォームを使用しようとしています。モジュール内に保存する必要があります。したがって、最初は私のファイル構造:

application/
   (...other directories)
   modules/
       group/
          controllers/
             IndexController.php
             (...controllers)
          forms/
             Create.php
          views/
             scripts/
                (...view scripts)
          Bootstrap.php

IndexController内で、フォームを設定しようとしています。

new Group_Form_Create()

そして、Create.phpのクラスはもちろんGroup_Form_Createです。次のエラーメッセージが表示されます。

Fatal error: Class 'Group_Form_Create' not found in (...)\application\modules\group\controllers\IndexController.php on line 380

Group_Bootstrapクラスを持つBootstrap.phpは、単なる空のクラスです。実際、私はデフォルトのZend構造を使用していますが、とにかく機能しません。問題がどこにあるのか、または考えられる解決策は何でしょうか?

4

3 に答える 3

3

私のモジュールブートストラップ(APPLICATION_PATH / modules / group / Bootstrap.php)で、次のコードを使用する場合:

    //Loads the autoloader resources
    $this->_moduleName = 'group';
    $resourceLoader = new Zend_Loader_Autoloader_Resource(array(
            'basePath' => APPLICATION_PATH ."/modules/".$this->_moduleName."/",
            'namespace' => '',
            'resourceTypes' => array(
                    //Tells the application where to find the forms
                    'form' => array(
                            'path' => 'forms/',
                            'namespace' => ucfirst($this->_moduleName).'_Form_'
                    ),
                    //Tells the application where to find the models
                    'model' => array(
                            'path' => 'models/',
                            'namespace' => ucfirst($this->_moduleName).'_Model_'
                    )
            )
    ));

次に、フォームまたはモデルを次のように呼び出します。

$frm = new Group_Form_Create();

すべてのモジュールで同じスニペットを使用し、$ this->_moduleNameの値のみを変更します。毎回。

お役に立てれば !

于 2012-07-23T12:57:53.020 に答える
1

モジュールのブートストラップが実行されていないようです。これらは、次の場合にロードされるモジュールリソースによってトリガーされます。

resources.modules[] = ""

あなたのapplication.ini。したがって、存在しない場合はこれを追加します。

于 2012-07-23T13:32:30.327 に答える
0

理想的には、箱から出して動作するはずです。

これをブートストラップに追加します。

protected function _initAutoload() {

    $autoloader = new Zend_Application_Module_Autoloader(array(
        'namespace' => 'Group_',
        'basePath' => dirname(__FILE__),
      ));

    Zend_Loader_Autoloader::getInstance()->setFallbackAutoloader(true);
    return $autoloader;

}

于 2012-07-23T12:19:15.570 に答える