在我的布局中,我有搜索表单,所以它显示在每个页面上。它看起来是这样的:
<?
$form = new SearchIndexForm();
$form->setAction($this->configuration['BaseUrl']Index/search);
echo $form; ?>我希望有像这样的东西:当有人点击提交按钮,表单重定向到“索引”控制器上的“搜索”操作,在那里有处理表单值。
那么,我应该怎么做,才能与此等效,即在布局中使用通过post方法从表单发送数据?
if($this->_request->isPost()){
$formValues = $this->_request->getParams();
if ($form->isValid($formValues)){
...
}
}执行上述操作后,当我单击submit时,将转到/Index/search,但什么也没有发生……
当表单在一个操作中时,它本身就能完美地工作。
发布于 2011-05-20 22:23:32
看起来你做的每件事都是正确的,但我认为有一些代码你应该改变。
尝试以下代码
$request = Zend_Controller_Front::getInstance()->getRequest();
//or you can try
//$request = $this->getRequest();
if($request->isPost()){
$form = new SearchIndexForm();
if ($form->isValid( $request->getPost() ) ){
echo 'This should output if the form is valid' . PHP_EOL;
}
}
我不喜欢像你在$this->_request中那样直接访问变量,因为Zend可能不得不对变量做一些事情来使它们“正确”。我知道有时候什么也做不了,但安全总比道歉好。除非你对此持肯定态度,除非我真正看过代码,否则我通常不会肯定这一点。
https://stackoverflow.com/questions/6069176
复制相似问题