Проблемы с формами в Zend Framework
I am getting the following error :
Fatal error: Class 'Application_Form_Employee' not found in /var/www/Employee/application/controllers/EmployeeController.php on line 31
Я создал отдельную папку для форм в приложениях и поместил форму Employee.php в папку Employee, которая находится внутри форм. Маршрутизация в application.ini показана ниже: resources.router.routes.employee.route = /employee
resources.router.routes.employee.defaults.module = default
resources.router.routes.employee.defaults.controller = Employee
resources.router.routes.employee.defaults.action = new
resources.router.routes.employee.route = /employee
resources.router.routes.employee.defaults.module = default
resources.router.routes.employee.defaults.controller = Employee
resources.router.routes.employee.defaults.action = edit
resources.router.routes.employee.route = /employee
resources.router.routes.employee.defaults.module = default
resources.router.routes.employee.defaults.controller = Employee
resources.router.routes.employee.defaults.action = index
Пожалуйста, уточните, требуется ли какая-либо дополнительная информация /////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////// PS: Я пытался решить эту ошибку тысячами способов, изменяя папки и маршрутизацию.
3 ответа
Чтобы просто включить формы и правильно настроить ресурс, используйте cli Zend_Tool.
В командной строке или, если ваш ide совместим (Netbeans is), введите команду:
zf enable form
это создаст правильный каталог для уровня приложения и форм пространства имен приложения.
При использовании форм уровня приложения к имени класса будет добавляться префикс Application_Form_
и файл будет существовать в
/application
/forms
/Myform.php
Если вам нужны формы в модуле, просто измените команду, чтобы отразить имя модуля:
zf enable form -m admin
почти все команды в Zend_Tool cli могут использовать ключ -m для указания имени модуля.
ZF1 имеет ряд предопределенных ресурсов, которые имеют свои собственные пространства имен класса Zend_Application_Module_Autoloader
имеет полный список пространств имен по умолчанию вместе с путем по умолчанию для каждого.
Этот ответ предполагает, что настройки вашего приложения достаточно близки к конфигурации по умолчанию ZF1.
PS Я заметил, что все ваши маршруты имеют одно и то же имя "сотрудник". Если вы хотите, чтобы каждый из этих маршрутов действительно работал, им нужны разные имена. Отдельные URL должны работать, но "названные" маршруты не будут работать. Будет работать только последний маршрут в стеке.
например:
//4 lines equals one route
resources.router.routes.employee.route = /employee
resources.router.routes.employee.defaults.module = default
resources.router.routes.employee.defaults.controller = Employee
resources.router.routes.employee.defaults.action = index
//this route might work better as
resources.router.routes.editEmployee.route = /employee/edit
resources.router.routes.editEmployee.defaults.module = default
resources.router.routes.editEmployee.defaults.controller = Employee
resources.router.routes.editEmployee.defaults.action = edit
Каждый "именованный" маршрут должен иметь уникальное имя и уникальный URL.
Я думаю, что эта ссылка вам очень поможет при использовании Zend_Form.
http://framework.zend.com/manual/1.12/en/zend.form.quickstart.html
Вы не должны называть свой класс формы Application_Form_Employee.
Это должно быть названо Form_Employee. Вы никогда не должны добавлять в свой класс приложение в Zend.
Например, модель, расположенная внутри application/Models/Test.php, должна называться Model_Test, а не Application_Model_Test. То же самое для форм, услуг...