Zend_Form не отображает данные - PullRequest
0 голосов
/ 11 октября 2010

Вот мой код:

<?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 () $ всегда пусто даже после того, как я отправляю форму и вижу данные в URL.В чем проблема?

РЕДАКТИРОВАТЬ: я исправил getValue () для getValues ​​(), но он все еще не работает.

Ответы [ 3 ]

2 голосов
/ 11 октября 2010

Прежде чем вы сможете использовать -> 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 голос
/ 11 октября 2010

Вам нужно передать $this->_request->getParams() в $form->isValid(), иначе в форме не будет значений для работы.

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

Нужная функция: getValue , а не getValues.

Тонкая разница, но они делают две совершенно разные вещи.

...