这是我的代码:
<?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(),但它仍无效。
答案 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。
一个微妙的区别,但他们做了两件完全不同的事情。