Проблемы с получением Zend Form для работы - PullRequest
0 голосов
/ 01 октября 2010

Я попытался настроить Zend-сайт со следующей структурой каталогов:

application
  -configs
  -forms
  -modules
     -admin
     -default
        -controllers
           -IndexController.php
        -forms
           -Testform.php
        -layouts
        -modules
        -views

Затем в моем IndexController.php у меня есть следующая

открытая функция contactMeAction () {

    $request = $this->getRequest();
    $form    = new Form_Testform();

    if ($this->getRequest()->isPost()) {
        if ($form->isValid($request->getPost())) {

// материал процесса

            return $this->_helper->redirector('index');
        }
    }

    $this->view->form = $form;

}

в файле Testform.php У меня есть

класс Form_Testform extends Zend_Form {открытая функция init () {...... etc

Но я получаю следующую ошибку:

Неустранимая ошибка: класс "Form_Testform" не найден в /home/websites/test.local/public_html/prototype/application/modules/default/controllers/IndexController.php в строке 22 * ​​1020 *

Стек вызовов: 0.0004 325228 1. {main} () /home/websites/test.local/public_html/prototype/public/index.php: 0 0.1742 5351472 2. Zend_Application-> run () /home/websites/test.local/public_html/prototype/public/index.php:28 0.1742 5351472 3. Zend_Application_Bootstrap_Bootstrap-> run () / ome- ZendF1.10.7 / library / Zend / Application.php: 366 0.1745 5351708 4. Zend_Controller_Front-> dispatch () /opt/ZendFramework-1.10.7/library/Zend/Application/Bootstrap/Bootstrap.php:97 0.1872 5707240 5. Zend_Controller_Dispatcher_Standard-> dispatch () /opt/ZendFramework-1.10.7/Controller/Front.php:954 0,2026 6016200 6. Zend_Controller_Action-> dispatch () /opt/ZendFramework-1.10.7/library/Zend/Controller/Dispatcher/Standard.php:295 0,2029 6020692 7. IndexMontroller->/opt/ZendFramework-1.10.7/library/Zend/Controller/Action.php:513

Где я ошибаюсь?

Ответы [ 3 ]

1 голос
/ 01 октября 2010

В основном ZF не находит форму, в которой он ожидает. Я думаю, что вам нужно иметь форму в application/forms, а не в application/modules/default/forms, как вы делаете.

Тогда имейте это как:

Application_Form_Testform extends Zend_Form

вместо

Form_Testform extends Zend_Form

--- EDIT ---

Так что в application/forms у вас есть файл Testform.php Этот файл выглядит так:

class Application_Form_Testform extends Zend_Form { 
// form code
}

В вашем контроллере (обратите внимание на название действия ... contactmeAction, а не contactMeAction):

public function contactmeAction {
    $form = new Application_Form_Testform();
    $this->view->form = $form;
}

Тогда по вашему мнению contactme.phtml:

echo $this->form;

Это должно работать. В противном случае я бы проверил орфографию, заглавные буквы в названии вашего действия и убедился, что все идет по правильному пути.

0 голосов
/ 10 апреля 2011

Проверьте имена / пространства имен, как говорит gaoshan88 (должно быть "class Application_Form_Testform extends Zend_Form" и "$ form = new Application_Form_Testform ()";)

Убедитесь, что ваше application / configs / application.ini содержит эти строки:

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

Наконец создайте пустой файл Bootstrap.php и поместите его в каталог application / modules / default /.

0 голосов
/ 01 октября 2010

Это проблема согласования / согласованности следующих вещей:

  1. пространство имен
  2. соглашения об именах классов
  3. расположение файла класса

Если вы хотите поместить свою форму в папку application/modules/default/forms, тогда назовите класс Default_Form_Testform.

...