大家好,让我解释一下:
$this->view->form = new Application_Form_Kursdaty();
$url = $this->view->url(
array(
'action' => 'details',
'controller' => $this->getRequest()->getControllerName(),
'module' => $this->getRequest()->getModuleName(),
'id' => @@@@@SELECTFIELD[selected]@@@@@@
),
'default',
true
);
$this->view->form->setAction($url);
我基本上希望我的选择字段重定向到我选择的页面。 我真的不知道该怎么做,请帮忙!
答案 0 :(得分:1)
如果您的表单是Zend_Form
的实例并填充了已发送的数据,那么您可以使用$form->getValue($nameOfField)
或$form->getElement($elementName)->getValue()
答案 1 :(得分:1)
这是你的问题!
在按下提交按钮之前,不会设置select元素的值。因此,您不能在帖子之后访问该值。
因此,在PHP中执行您想要执行的操作的方法是使用2个操作。第一个操作接受帖子并执行验证,然后您可以获取数据并将其转发到您选择的操作,具体取决于该选择的值。
public function formAction() {
$form = new Form();
$form->setAction('/url');
if ($this->_request->isPost()){
if ($form->isValid($this->_request->getPost()){
$select = $form->getValue('select');
switch($select) {
case ('value1') :
$this->_forward('action');
break;
case ('value2') :
$this->_forward('action');
break;
default :
$this->_forward('action');
}
}
} else {
$this->view->form = $form
}
这可能是您在第一个操作时会看到的工作流程。您需要计算详细信息,但在此实例中应该可以_forward
,因为它应该执行重定向而不会丢失当前请求对象。