Форма обратной связи не работает в 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) )
и все идет хорошо, как шарм.