Php Zend Form getValues()不';行不通
我正在尝试使用Zend创建简单表单,我需要在大多数情况下使用此表单,因此我创建了默认表单,然后在控制器中使用private函数修改它。但我有两个问题:Php Zend Form getValues()不';行不通,php,forms,zend-framework,Php,Forms,Zend Framework,我正在尝试使用Zend创建简单表单,我需要在大多数情况下使用此表单,因此我创建了默认表单,然后在控制器中使用private函数修改它。但我有两个问题: 表单getValues()不接受文本元素的值 我将render放在表单操作的末尾,但它没有呈现到正确的页面 表单由文本字段和sumbit按钮组成 以下是我的控制器的代码: 这是用于自定义表单的 private function getSearchForm($action = '', $name, $type, $placeholder) {
表单由文本字段和sumbit按钮组成 以下是我的控制器的代码: 这是用于自定义表单的
private function getSearchForm($action = '', $name, $type, $placeholder)
{
$urlHelper = $this->_helper->getHelper('url');
$this->_searchForm = new Application_Form_Admin_Search_Search();
$this->_searchForm->setName($name);
$text = $this->_searchForm->getElement('ricerca');
$text->setLabel('Ricerca '.$type);
$text->setName($type);
$text->setAttrib('placeholder', $placeholder);
$this->_searchForm->setAction($urlHelper->url(array(
'controller' => 'admin',
'action' => $action),
'default'
));
return $this->_searchForm;
}
这些措施包括:
public function pneumaticoAction()
{
$this->_searchForm = $this->getSearchForm('pneumaticosearch', 'search', 'pneumatico', 'Ricerca per: modello, marchio o codice');
$this->view->searchForm = $this->_searchForm;
}
public function pneumaticosearchAction()
{
if (!$this->getRequest()->isPost()) {
$this->_helper->redirector('index', 'public');
}
$form=$this->_searchForm;
if (!$form->isValid($this->getRequest()->getPost())) {
$this->render('pneumatico');
}
$values = $form->getValues();
$this->view->assign(array(
"pneumatici" => $this->_modelAdmin->searchPneumatici($values['pneumatico'])
));
$this->render('pneumatico');
}
第一个问题,当您被路由到
pneumaticsearch
操作时,您没有设置$this->\u searchForm
,但您将其设置为:
$form=$this->_searchForm;
应该是这样的:
$form = $this->getSearchForm('pneumaticosearch', 'search', 'pneumatico', 'Ricerca per: modello, marchio o codice');
第二个问题。运行渲染时,类似于将$this->view
参数传递到.phtml
。我看不到您的视图文件,但我想您需要先设置视图:
$this->view->searchForm = $form
我尝试了您的解决方案,但是$form->getValues()的问题仍然存在。如果我渲染以查看
$values
我会得到以下结果:数组('ricerca'=>'',)
。没有文本字段的值。但是如果我渲染$\u POST
我得到这个结果数组('pneumatico'=>'something','search'=>'Ricerca',)
这就是我需要的,那么问题是:表单中每个元素的名称是什么?在你刚才给我们的代码中,似乎有一个元素叫做ricerca
。$\u POST
的键应与表单中的键相同,以便通过isValid
设置表单中的任何值。表单由文本字段和sumbit按钮组成:文本字段名称为pneumatico
,提交名称为search
,如您在$\u POST上看到的。我在发布的私有函数上设置的这些名称(getSearchForm
)。我不明白为什么在$\u POST
中我得到了正确的值,而在getValues
中我没有确保它是表单问题。您可以选中$form->getElements()
以获取所有元素。您可以通过$form->populate($this->getRequest()->getPost())
仔细检查它,看看它是否可以解决getValues
问题。我还建议转储$this->\u getParams()
。使用$form->getElements
我可以找到所有元素