Skip to content
Permalink
Browse files

Allow attributes to be passed to RadioWidget & MultiCheckboxWidget

    This currently already works with CheckboxWidget
  • Loading branch information...
lilHermit committed Feb 8, 2017
1 parent 8a4a496 commit 116f799a4efcc3ad12f87c876f9b9c029e6f1a29
@@ -167,7 +167,7 @@ protected function _renderInputs($data, $context)
if (empty($checkbox['id'])) {
$checkbox['id'] = $this->_id($checkbox['name'], $checkbox['value']);
}
$out[] = $this->_renderInput($checkbox, $context);
$out[] = $this->_renderInput($checkbox + $data, $context);
}
return $out;
@@ -188,7 +188,7 @@ protected function _renderInput($checkbox, $context)
'templateVars' => $checkbox['templateVars'],
'attrs' => $this->_templates->formatAttributes(
$checkbox,
['name', 'value', 'text']
['name', 'value', 'text', 'options', 'label', 'val', 'type', 'hiddenField']
)
]);
@@ -187,7 +187,7 @@ protected function _renderInput($val, $text, $data, $context)
'name' => $radio['name'],
'value' => $escape ? h($radio['value']) : $radio['value'],
'templateVars' => $radio['templateVars'],
'attrs' => $this->_templates->formatAttributes($radio, ['name', 'value', 'text']),
'attrs' => $this->_templates->formatAttributes($radio + $data, ['name', 'value', 'text', 'options', 'label', 'val', 'type']),
]);
$label = $this->_renderLabel(
@@ -8496,4 +8496,86 @@ public function testNestedLabelInput()
];
$this->assertHtml($expected, $result);
}
/**
* testRadioAttributes method
*
* Test generation of radio widget with additional attributes.
*
* @return void
*/
public function testRadioAttributes()
{
$result = $this->Form->radio('Model.field', ['option A'], ['class' => 'my-class', 'data-ref' => 'custom-attr']);
$expected = [
'input' => ['type' => 'hidden', 'name' => 'Model[field]', 'value' => ''],
'label' => ['for' => 'model-field-0'],
['input' => [
'type' => 'radio', 'name' => 'Model[field]',
'value' => '0', 'id' => 'model-field-0',
'class' => 'my-class', 'data-ref' => 'custom-attr'
]],
'option A',
'/label'
];
$this->assertHtml($expected, $result);
}
/**
* testCheckboxAttributes method
*
* Test generation of checkbox widget with additional attributes.
*
* @return void
*/
public function testCheckboxAttributes()
{
$result = $this->Form->checkbox('Model.field', ['class' => 'my-class', 'data-ref' => 'custom-attr']);
$expected = [
'input' => ['type' => 'hidden', 'name' => 'Model[field]', 'value' => '0'],
['input' => [
'type' => 'checkbox', 'name' => 'Model[field]',
'value' => '1', 'class' => 'my-class',
'data-ref' => 'custom-attr'
]]
];
$this->assertHtml($expected, $result);
}
/**
* testMultiCheckboxAttributes method
*
* Test generation of multiple checkboxes with additional attributes
*
* @return void
*/
public function testMultiCheckboxAttributes()
{
$result = $this->Form->multiCheckbox('category', ['1', '2'], ['class' => 'my-class', 'data-ref' => 'custom-attr']);
$expected = [
'input' => ['type' => 'hidden', 'name' => 'category', 'value' => ''],
['div' => ['class' => 'checkbox']],
['label' => ['for' => 'category-0']],
['input' => [
'type' => 'checkbox', 'name' => 'category[]',
'value' => '0', 'id' => 'category-0',
'class' => 'my-class', 'data-ref' => 'custom-attr'
]],
'1',
'/label',
'/div',
['div' => ['class' => 'checkbox']],
['label' => ['for' => 'category-1']],
['input' => [
'type' => 'checkbox', 'name' => 'category[]',
'value' => '1', 'id' => 'category-1',
'class' => 'my-class', 'data-ref' => 'custom-attr'
]],
'2',
'/label',
'/div'
];
$this->assertHtml($expected, $result);
}
}

0 comments on commit 116f799

Please sign in to comment.
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.