0

我们有一个zend带有文本输入字段和复选框数组的表单,如下所示 -

<input class="checkbox_Category" type="checkbox" name="tag[]" value="19"> somename1 <br/>
<input class="checkbox_Category" type="checkbox" name="tag[]" value="20"> somename2 <br/>
<input class="checkbox_Category" type="checkbox" name="tag[]" value="21"> somename3 <br/>

并使用

$formObject->populate($formDataArray);

在控制器中填充整个表单中的数据。所有文本输入字段似乎都填充得很好,但复选框却没有。在 $formDataArray 中,复选框的数据格式为

[标签] => 数组([0] => 20 [1] => 19)

连同其他表单数据,如 - [firstName] => 'somename' 等。我无法弄清楚表单期望的数据格式,以便填充 populate();

4

2 回答 2

0

嗨,您作为数组给出的名称可能有问题,请更改如下

<input class="checkbox_Category" type="checkbox" name="tag" value="19"> somename1 <br/>
<input class="checkbox_Category" type="checkbox" name="tag" value="20"> somename2 <br/>
<input class="checkbox_Category" type="checkbox" name="tag" value="21"> somename3 <br/>

如果我能进一步帮助你,请告诉我

于 2013-05-14T09:19:43.200 回答
0

如果没有真正看到您的 Zend_Form 代码,这是非常困难的。然而,我经常看到人们将 Zend Framework 中的“checkbox”元素与“multiCheckbox”元素混淆。我知道 - 这有点令人困惑 - 但复选框是一个具有开/关值的复选框。MultiCheckbox 处理多个值 - 我认为这是您想要完成的。让我向您展示一个可以在上面运行并生成您的 HTML 的快速表单。

class Application_Form_Test extends Zend_Form
{
    public function init()
    {
        $this->setMethod('post');

        $multiOptions = array(
            19 => 'somename1',
            20 => 'somename2',
            21 => 'somename3'
        );

        $this->addElement('multiCheckbox', 'tag', array(
            'multiOptions'=>$multiOptions
        ));

        $this->addElement('submit', 'submitbutton');
    }
}

现在,如果你使用类似...

$form->populate($this->getRequest()->getPost());

在您的控制器中,它将按预期填充。

希望这可以帮助!

于 2013-05-18T15:20:55.310 回答