如何将id从“输入选择”传递给它的动作?

时间:2012-09-03 17:14:38

标签: php zend-framework zend-form

大家好,让我解释一下:

$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);     

我基本上希望我的选择字段重定向到我选择的页面。 我真的不知道该怎么做,请帮忙!

2 个答案:

答案 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,因为它应该执行重定向而不会丢失当前请求对象。