0

我开始学习 Zend,所以这是我关注的联系我们页面的链接 -

我的 Zend 版本 - Zend Framework v1.11.11

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

我使用命令行创建了表单 -zf create form Contact它成功创建了 File.Fileforms下的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.phpC:\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 错误,也请告诉我:)

4

1 回答 1

0

在执行各种启发式方法并检查各个级别的代码后,我就可以调试我的代码了。问题实际上出在这个 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) )

一切都像魅力一样顺利。

于 2013-01-09T05:50:53.360 回答