Permalink
Browse files

Don't set "required" attribute for checkboxes (unless explicitly spec…

…ified).

Adding it prevents user from submitting form with checkbox unchecked when the "boolean" validation rule is specified for the field.
Closes #3560
  • Loading branch information...
ADmad committed Jan 23, 2013
1 parent 51946ff commit 82f34c4cb3515e06ca5ab237a9b8e67ad44b601b
Showing with 25 additions and 1 deletion.
  1. +23 −0 lib/Cake/Test/Case/View/Helper/FormHelperTest.php
  2. +2 −1 lib/Cake/View/Helper/FormHelper.php
@@ -128,6 +128,7 @@ class Contact extends CakeTestModel {
'rule_on_create' => array('rule' => array('maxLength', 50), 'on' => 'create'),
'rule_on_update' => array('rule' => array('between', 1, 50), 'on' => 'update'),
),
'boolean_field' => array('rule' => 'boolean')
);
/**
@@ -7279,6 +7280,28 @@ public function testFormInputRequiredDetection() {
'/div'
);
$this->assertTags($result, $expected);
$result = $this->Form->input('Contact.boolean_field', array('type' => 'checkbox'));
$expected = array(
'div' => array('class' => 'input checkbox required'),
array('input' => array(
'type' => 'hidden',
'name' => 'data[Contact][boolean_field]',
'id' => 'ContactBooleanField_',
'value' => '0'
)),
array('input' => array(
'type' => 'checkbox',
'name' => 'data[Contact][boolean_field]',
'value' => '1',
'id' => 'ContactBooleanField'
)),
'label' => array('for' => 'ContactBooleanField'),
'Boolean Field',
'/label',
'/div'
);
$this->assertTags($result, $expected);
}
/**
@@ -1379,9 +1379,10 @@ public function checkbox($fieldName, $options = array()) {
unset($options['default']);
}
$options += array('required' => false);
$options = $this->_initInputField($fieldName, $options) + array('hiddenField' => true);
$value = current($this->value($valueOptions));
$output = "";
$output = '';
if (empty($options['value'])) {
$options['value'] = 1;

0 comments on commit 82f34c4

Please sign in to comment.