zend:使用$ form-> populate()填充复选框数组;来自控制器

时间:2013-05-14 08:28:39

标签: php zend-framework checkbox zend-form

我们有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-&GT;填充($ formDataArray);

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

  

[tag] =&gt;数组([0] =&gt; 20 [1] =&gt; 19)

与其他表格数据一样 - [firstName] =&gt; 'somename'等 我无法弄清楚表单所期望的数据格式,以便填充populate();

2 个答案:

答案 0 :(得分: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/>

如果我能帮助你,请告诉我

答案 1 :(得分:0)

如果没有真正看到你的Zend_Form代码,这是非常困难的。但是,大多数情况下,我看到人们将“复选框”元素误认为Zend Framework中的“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());

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

希望这有帮助!