1

大家好,让我解释一下:

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

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

4

2 回答 2

1

如果您的表单是发送数据的实例Zend_Form并填充了发送数据,那么您可以使用$form->getValue($nameOfField)$form->getElement($elementName)->getValue()

于 2012-09-03T17:50:15.370 回答
1

这是你的问题!

直到按下提交按钮后才会设置选择元素的值。因此,在发布之前,您无法访问该值。

因此,在 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在这种情况下应该是可行的,因为它应该在不丢失当前请求对象的情况下执行重定向。

于 2012-09-04T02:17:10.407 回答