Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php zend:使用$form->;填充复选框数组;填充();来自控制器_Php_Zend Framework_Checkbox_Zend Form - Fatal编程技术网

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

Php zend:使用$form->;填充复选框数组;填充();来自控制器,php,zend-framework,checkbox,zend-form,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 cla

我们有一个带有文本输入字段和复选框数组的
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/>
somename1
somename2
somename3
使用

$formObject->populate($formDataArray)

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

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

以及其他表单数据,如-[firstName]=>“somename”等。
我无法确定表单所需的数据格式,以便使用populate()填充数据

hi可能与您作为数组指定的名称有问题,请按以下方式更改

<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/>
somename1
somename2
somename3

请让我知道我是否可以在没有看到您的Zend_表单代码的情况下进一步帮助您,这是非常困难的。然而,我经常看到人们在Zend框架中将“checkbox”元素与“multiCheckbox”元素弄错。我知道-这有点混乱-但checkbox是一个带有开/关值的复选框。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());
在控制器中,它将按预期填充


希望这有帮助

您的格式是正确的,因此问题不在您发布的代码中。如果勾选某些复选框并提交表单,但缺少必填字段(因此表单将重新显示),复选框是否仍保持勾选状态?您好。。我确信数组是必需的,因为这就是我们迭代和获取检查值的方式。但是当我使用zend form时,它对我来说很好,就像$objEthnicity=new zend_form_Element_MultiCheckbox(“种族”);$objEthnicity->addMultiOptions($ocidentity)->setLabel($this->translate('LABEL_ocidentity'))->setValue(explode('explode('ocidentity'))->addFilter('StripTags')->removeDecorator('HtmlTag')->removeDecorator('HtmlTag')->removeDecorator('LABEL')->setAttrib('no,'2');