我想制作一个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.',
)
),
),
),
));
}
}
?>
答案 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'
)
));
如果您添加 属性数组 ,它应该有效。