Модуль Zend Forms включает пути

Я использую Zend 1.8.4 и настраиваю простой тест формы. Мой класс формы находится в './application/forms/SectorSearch.php', а имя класса

<?php class Form_SectorSearch extends Zend_Form {...} 

Мой контроллер создает новую форму в методе init ()

 <?php class SectorController extends Zend_Controller_Action { function init() { $this->initView(); $form = new Form_SectorSearch(array( 'method' => '/public/sector/search', 'action' => 'post')); $this->view->form = $form; } .. } 

Но я получаю эту ошибку

 Warning: Zend_Loader_Autoloader_Resource::include(/home/poconnell/projects/bhaa/application/forms/SectorSearch.php) [zend-loader-autoloader-resource.include]: failed to open stream: No such file or directory in /home/poconnell/projects/bhaa/library/Zend/Loader/Autoloader/Resource.php on line 178 Warning: Zend_Loader_Autoloader_Resource::include() [function.include]: Failed opening '/home/poconnell/projects/bhaa/application/forms/SectorSearch.php' for inclusion (include_path='/home/poconnell/projects/bhaa/library:/home/poconnell/projects/bhaa/application:.:/usr/share/php:/usr/share/pear') in /home/poconnell/projects/bhaa/library/Zend/Loader/Autoloader/Resource.php on line 178 Fatal error: Class 'Form_SectorSearch' not found in /home/poconnell/projects/bhaa/application/controllers/SectorController.php on line 19 

Я на 100% уверен, что класс включен в путь include.

Я думаю, что это проблема с загрузкой, и именно так я загружаю модуль по умолчанию

 protected function _initAutoload() { //Zend_Loader_Autoloader_Resource - Zend_Application_Module_Autoloader $moduleLoader = new Zend_Application_Module_Autoloader(array( 'namespace' => '', 'basePath' => APPLICATION_PATH )); return $moduleLoader; } 

Я даже попытался использовать этот шаблон, как это рекомендовано при загрузке модульных форм и моделей в Zend Framework 1.8

 protected function _initAutoload() { //Zend_Loader_Autoloader_Resource - Zend_Application_Module_Autoloader $moduleLoader = new Zend_Application_Module_Autoloader(array( 'namespace' => '', 'basePath' => APPLICATION_PATH, 'resourceTypes' => array ( 'form' => array( 'path' => 'forms', 'namespace' => 'Form')) ); return $moduleLoader; } 

но никакой радости. есть идеи?

Solutions Collecting From Web of "Модуль Zend Forms включает пути"

Убедитесь, что регистр соответствует точно. Папка должна быть названа Forms, если вы не указали другой каталог для классов Form и убедитесь, что SectorSearch не является sEcTorSEarcH.php или чем-то

Я добавил следующее в файл Bootstrap.php

 protected function _initAutoload() { $autoloader = new Zend_Loader_Autoloader_Resource(array( 'namespace' => '', 'basePath' => APPLICATION_PATH, 'resourceTypes' => array( 'form' => array( 'path' => 'forms', 'namespace' => 'Form', ), 'model' => array( 'path' => 'models', 'namespace' => 'Model', ), ) )); return $autoloader; } 

и теперь это работает, никаких ошибок больше .. черт возьми, я рад, что это работает, я почти сошел с ума .. 🙂

Zend Framework интерпретирует символы подчеркивания в именах классов в виде папок. Если вы вручную добавляете папку приложения / форм в путь включения, то вместо Form_SectorSearch вы должны называть свой класс FormSectorSearch (и имя файла FormSectorSearch.php). В противном случае вы добавили бы только папку приложения в путь include и затем указали папку Form вместо форм.