如何在Zend Form中获取单选按钮的值

时间:2013-09-29 08:41:56

标签: php zend-framework zend-form

这是我的表格,我有一个从1到5的单选按钮(非常糟糕到非常好)

    parent::__construct($name);

    $this->setAttribute('method', 'post');

    $this->add(array(
        'type' => 'Zend\Form\Element\Radio',
        'name' => 'rate_box',
        'options' => array(
            'label' => 'Please choose your rate',
            'value_options' => array(
                '1' => ' Very Bad',
                '2' => ' Bad',
                '3' => ' Fine',
                '4' => ' Good',
                '5' => ' Very Good',
            ),
        ),
        'attributes' => array(
            'value' => '1' //set checked to '1'
        )
    ));

    $this->add(array(
        'name' => 'submit',
        'type' => 'Submit',
        'attributes' => array(
            'id' => 'submit',
            'class' => 'btn btn-primary',
        ),
    ));

这是我的控制器的相关部分

        $form = new VoteForm();

        $request = $this->getRequest();
        if ($request->isPost())
        {
            $form->setData($request->getPost());
            if ($form->isValid())
            {
                $formdata = $form->getData();
                $vote = new Vote();
                $data = $vote->getArrayCopy();
                $data['user_id'] = $user_id;
                $data['voted_user_id'] = $voted_user_id;
                $data['ratescore'] = $formdata['rate_box']; //Here I take the value of radion button

                $vote->populate($data);
                try
                {
                    $this->getEntityManager()->persist($vote);
                    $this->getEntityManager()->flush();
                    return $this->redirect()->toRoute('home',array('user_id' => $user_id,
                                                              'action' => 'home',
                    ));
                }
                catch(DBALException $e){

                }
            }
        }

为什么我无法检索" rate_box"并保存到我的$ data [' ratescore']? 谢谢!

1 个答案:

答案 0 :(得分:0)

我几小时前就遇到过这个问题。您可以尝试使用动作中的原生$ _POST ['rate_box']来检索单选按钮的值。 所以,在你的控制器中:

    public function yourAction() {
        $form = new VoteForm();
        if($this->getRequest->isPost()) {
            $data = $this->getRequest->getPost();
            if($form->isValid($data)) {
                $rate = $_POST['rate_box'];
                // another code..
            }
        }
    }

希望这会有所帮助.. :)