1

テストモジュールがあります。テストモジュールでは、フォームフォルダにフォームがあります。

myproject / application / modules / test / forms / TestForm.php

class Test_Form_TestForm extends Zend_Form {
    //form elements
}

myproject / application / modules / test / controllers / TestController.php

class Test_TestController extends Zend_Controller_Action {

    public function indexAction() {
        $this->view->form = new Test_Form_TestForm();  // this is generating error
    }
} // end class

コントローラでのフォームの初期化により、次のエラーが発生しています。

Fatal error: Class 'Test_Form_TestForm' not found in C:\wamp\www\student\application\modules\notification\controllers\NotificationController.php on line 16

コントローラでこのフォームにアクセスできるようにする方法。同じタイプのケースがデフォルトのコントローラーで機能しています。モジュールをForm_インジケーターを使用してブートストラップに登録する必要があることは知っていますが、正確な構文がわかりません。

4

5 に答える 5

4

次のように、1つのブートストラップファイルの個別の関数で複数のモジュールを初期化することもできます。

protected function _initAutoloaders() {

        $test_loader = new Zend_Application_Module_Autoloader( array(   'namespace' => 'Test',
                                                                            'basePath'  => APPLICATION_PATH . '/modules/test'
        ));


      $mynew_loader = new Zend_Application_Module_Autoloader( array(    'namespace' => 'Mynew',
                                                                            'basePath'  => APPLICATION_PATH . '/modules/mynew'
        ));
}
于 2011-02-07T10:05:59.510 に答える
4

モジュールで機能するZend Autoloaderには、すべてのモジュールのブートストラップと、モジュールリソースの初期化が必要です。

だから、あなたのapplication/modules/test/Bootstrap.php

class Test_Bootstrap extends Zend_Application_Module_Bootstrap {}

更新:

そしてあなたの中でapplication/configs/application.ini

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

モジュールの自動読み込みの詳細については、こちらをご覧ください

于 2011-02-03T21:18:02.513 に答える
2

モジュールのオートローダーのセットアップ方法に関するVikaの答えは正しいです。

エラーは、フォームクラスがNotificationControllerコントローラーの下の通知モジュールに見つからないことを示しています。

したがって、通知モジュールのブートストラップクラスが必要です

あなたの中でapplication/modules/notification/Bootstrap.php:

class Notification_Bootstrap extends Zend_Application_Module_Bootstrap {}
于 2011-02-06T20:34:39.113 に答える
1

これが最善の方法かどうかはわかりませんが、機能します。

ブートストラップで

...
$autoloader = new Zend_Loader_Autoloader_Resource(array('namespace' => '', 'basePath' => APPLICATION_PATH));
$autoloader->addResourceType('Test_Form', '/test/forms', 'Test_Form');
...
于 2011-02-06T09:06:12.877 に答える
1

ビカの答えは正しいようです。

それでも問題が解決しない場合は、application.iniを変更してみてください

resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.frontController.moduleDefault = "test"
resources.modules[] = "test"
resources.modules[] = "other"

リソースリストで正確なモジュール名を指定すると、Zendはフォームおよびその他のリソースオートローダーを自動的に魔法のように登録します。デバッグの場合、 modules / test / Boostrap.phpをトリガーし、内部に_initメソッドを含める必要があります。楽しむ。

于 2011-02-08T15:49:23.163 に答える