I have a test module. In test module I have a Form in forms folder.
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
Form initialization in controller is generating following error:
Fatal error: Class 'Test_Form_TestForm' not found in C:\wamp\www\student\application\modules\notification\controllers\NotificationController.php on line 16
How to make this form accessable in controller. Same type of case is working with default controller. I know I have to register my module in bootstrap with Form_ indicator but dont know exact syntax.
I don't know if this is the best way, but it works.
In your bootstrap
In order for
Zend Autoloader
to work for your modules, you need to have bootstraps for all of your modules, and also modules resource initialized.So, in your
application/modules/test/Bootstrap.php
:Upd:
And in your
application/configs/application.ini
:More info about autoloading in modules here
Vika's answer seems to be correct.
If you still having problems, try modify your application.ini
If you specify exact module names in resource list, Zend will auto-magically register the Form and other resource auto-loaders. In debugging case modules/test/Boostrap.php should be triggered and any _init method inside. Have fun.
Vika's answer is correct on how to setup modules autoloader.
Your error states that the form class cannot be found in notification module under NotificationController controller.
So you need to have bootstrap class for the notification module
In your
application/modules/notification/Bootstrap.php:
You can also initialize multiple modules in a separate function in one Bootstrap file like: