$form = new Application_Form_Install();
I formularz działa. Jeśli natomiast umieszczę plik formularza w katalogu /Application/Modules/admin/forms/install.php i w kontrollerze /Application/modules/admin/controller/PluginsController.php zmienię z
$form = new Application_Form_Install();
na
$form = new Application_Module_Admin_Form_Install();
i oczywiście nazwę klasy formularza w pliku install.php na "Application_Module_Admin_Form_Install" to zend loader nie odnajduje mi klasy formularza, co objawia się błędem:
Cytat
Fatal error: Class 'Application_Module_Admin_Form_Install' not found in /var/www/PhpProject1/application/modules/admin/controllers/PluginsController.php on line 18
Zenda pod moduły ustawiłem według tutoriala:link
czyli stworzyłem plugin ładujący moduły:
class Application_Plugin_ModuleLoader extends Zend_Controller_Plugin_Abstract { public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request) { $module = $request->getModuleName(); // moduł domyślny można ominąć if($module == 'default') { return; } // ścieżka do pliku Bootstrap $path = APPLICATION_PATH . '/modules/' . $module . '/Bootstrap.php'; // nazwa klasy Bootstrap // inicjalizacja, załadowanie i utworzenia obiektu klasy Bootstrap modułu $application = new Zend_Application( APPLICATION_ENV, APPLICATION_PATH . '/modules/' . $module . '/configs/module.ini' ); $bootstrap = new $class($application); $bootstrap->bootstrap(); } }
Wolałbym mieć pliki formularzy w podkatalogach modułów bo tak będzie przejrzyściej. Co muszę dopisać żeby ładować pliki formularzy z katalogu modułu?
Problem rozwiązany. Wystarczyło w głównym bootstrapie dodać:
protected function _initAutoload(){ 'namespace' => 'Admin', 'basePath' => 'application/modules/admin/', )); $autoloader->addResourceType('forms', 'forms', 'Form_'); return $autoloader; }
I nazwę klasy formularza w admin zmienić na Admin_Form_Install