Zend_Form不显示数据

时间:2010-10-11 16:05:29

标签: php zend-framework zend-form

这是我的代码:

<?php

class IndexController extends Zend_Controller_Action
{

    public function indexAction()
    {
        $this->_forward('search');
    }

    public function searchAction()
    {
        if($this->getRequest()->isGet())
        {
            $form = $this->getForm();

            $value  = $form->getValue('search');
            echo "'", $value, "'"; // <-- prints ''
        }

        $this->view->form = $this->getForm();
    }

    public function getForm()
    {
        $form = new Zend_Form();
        $form->setAction('/index/search')
             ->setMethod('get');

        $search = $form->createElement('text', 'search');
        $search->addFilter('StripTags')
               ->addFilter('StringTrim');

        // Add elements to form:

        $form->addElement($search)
             ->addElement('submit', 'submit', array('label' => 'Search'));

        return $form;
    }
}

searchAction()中,即使我提交表单后,$ value也始终为空,我看到了URL中的数据。有什么问题?

编辑:我将getValue()修复为getValues(),但它仍无效。

3 个答案:

答案 0 :(得分:2)

在你能够使用之前 - &gt; getValue();你必须验证表格。

 public function searchAction()
    {
        if($this->getRequest()->isGet())
        {
            $form = $this->getForm();

            if ($form->isValid()) {
                $value  = $form->getValue('search');
                echo "'", $value, "'"; // <-- prints ''
            } else {
                // what ever
            }



        }

        $this->view->form = $this->getForm();
    }

答案 1 :(得分:1)

您需要将$this->_request->getParams()传递给$form->isValid(),否则表单将无法使用任何值。

答案 2 :(得分:0)

您想要的功能是 getValue ,而不是getValues。

一个微妙的区别,但他们做了两件完全不同的事情。