Форма обратной связи не работает в Zend Framework

Я начал изучать Zend, так что по этой ссылке я перешел на страницу контактов -

Моя версия Zend - Zend Framework v1.11.11

http://www.tutorial-portal.com/tutorial/show/id/27

Я создал форму с помощью командной строки - zf create form Contact который успешно создал папку forms под которым Contact.php Файл. Код в Contact.php как следует -

<?php

class Application_Form_Contact extends Zend_Form
{

    public function init()
    {
        /* Form Elements & Other Definitions Here ... */
        $this->setmethod('post');
        $this->setName('contact-form');

        $this->addElement('text', 'name', array(
                            'label' => 'Please enter your name',
                            'required' => true,
                         ));


        $this->addElement('text', 'email', array(
                            'label' => 'Please enter email address',
                            'required' => true,
                            'validators' => array('EmailAddress'),
                         ));

        $this->addElement('textarea', 'message', array(
                            'label' => 'Please enter your message',
                            'required' => true,
                            'validators' => array( array('validator' => 'StringLength', 'options' => array(0, 20) )
                         ));

        $this->addElement('captcha', 'captcha', array(
                            'label'      => 'Please enter the 5 letters displayed below:',
                            'required'   => true,
                            'captcha'    => array('captcha' => 'Figlet','wordLen' => 5,'timeout' => 300 )
                        ));                                      

        $this->addElement('submit', 'submit', array(
                            'ignore'   => true,
                            'label'    => 'Send Message',
                        ));

        $this->addElement('hash', 'csrf', array(
                            'ignore' => true,
                        ));
    }               
}

Теперь я создал контроллер ContactController.php под C:\xampp\htdocs\projectone\application\controllers, Код в этом контроллере выглядит так -

<?php

class ContactController extends Zend_Controller_Action
{

    public function init()
    {
        /* Initialize action controller here */
        //$form  = new Application_Form_Contact();
        //$this->view->form = $form;

    }

    public function indexAction()
    {
        // action body
        // Create form instance
        $form = new Application_Form_Contact();

        /**
         * Get request
         */
        $request = $this->getRequest();
        $post = $request->getPost(); // This contains the POST params

        /**
         * Check if form was sent
         */
        if ($request->isPost()) {
            /**
             * Check if form is valid
             */
            if ($form->isValid($post)) {
                // build message
                $message = 'From: ' . $post['name'] . chr(10) . 'Email: ' . $post['email'] . chr(10) . 'Message: ' . $post['message'];
                // send mail
                mail('contact@yourwebsite.com', 'contact: ' . $post['subject'], $message);
            }
        }

        // give form to view (needed in index.phtml file)
        $this->view->form = $form;

    }

}

Код в index.phtml в структуре папок C:\xampp\htdocs\projectone\application\views\scripts\contact идет так - повторяя код в тегах php - echo $this->form

Но это не работает вообще:(действительно не могу определить, что я делаю неправильно.

Это только показывает пустую страницу, и ничего, даже простой HTML-контент.

Это URL, который я использую, хотя остальные контроллеры работают нормально -

http://localhost/projectone/public/contact

PS- Так как я начинающий в Zend, я не знаю, где и как искать ошибки Zend, дайте мне знать об этом тоже:)

1 ответ

Решение

После выполнения различной эвристики и проверки кода на разных уровнях я могу отлаживать свой код. Проблема на самом деле была в этом LOC -

БАГ -

    $this->addElement('textarea', 'message', array(
                        'label' => 'Please enter your message',
                        'required' => true,
                        'validators' => array( array('validator' => 'StringLength', 'options' => array(0, 20) )
                     ));

УДАЛИТЬ

'validators' => array( array('validator' => 'StringLength', 'options' => array(0, 20) )

и все идет хорошо, как шарм.

Другие вопросы по тегам