zf2由formInput呈现的复选框失败

时间:2015-11-24 09:48:25

标签: php checkbox zend-framework2 zend-form

我想制作一个chekbox用于使用条款。我发现了一个有趣的解决方案,由网络编码器How to validate a checkbox in ZF2

提供

案例是我有一个困难的HTML结构,这就是为什么我既不能使用formRow,也不能使用formCollection来呈现。我尝试使用以下方法:

$agreement = $form->get('agreement');
echo $this->formInput($agreement);
echo $this->formElementErrors($agreement);

我收到空值:

<input type="checkbox" name="agreement" class="checkbox" value="">

我也尝试添加隐藏字段,但我的尝试也失败了:

$agreement = $form->get('agreement');
echo $this->formHidden($agreement);
echo $this->formInput($agreement);
echo $this->formElementErrors($agreement);

html是:

<input type="hidden"   name="agreement" class="checkbox" value="">
<input type="checkbox" name="agreement" class="checkbox" value="">

因此,我收到有关&#34的错误;价值是必需的,不能为空&#34;

可能有人可以给我一个如何在我的案例中正确呈现复选框的提示吗?

我的inputFilter的代码:

<?php
namespace Auth\Form;

use Zend\InputFilter\InputFilter;
use Zend\Validator\Digits;

class UserFormFilter extends InputFilter {

    public function __construct() {

        $this->add(array(
            'name' => 'agreement',
            'validators' => array(
                array(
                    'name' => 'Digits',
                    'break_chain_on_failure' => true,
                    'options' => array(
                        'messages' => array (
                            Digits::NOT_DIGITS => 'You must agree to the terms of use.',
                        )
                    ),
                ),

            ),
        ));
    }
}
?>

1 个答案:

答案 0 :(得分:0)

请检查一下。

$this->add(array(
        'type' => 'Zend\Form\Element\Checkbox',
        'name' => 'agreeterms',
        'options' => array(
            'label' => 'I agree to all terms and conditions',
            'use_hidden_element' => true,
            'checked_value' => 1,
            'unchecked_value' => 'no'
        ),
        'attributes' => array(//the difference is here
            'value' => 'yes'
        )
    ));

如果您添加 属性数组 ,它应该有效。