On this page
Class SelectBoxWidget
Input widget class for generating a selectbox.
This class is usually used internally by Cake\View\Helper\FormHelper
, it but can be used to generate standalone select boxes.
Property Summary
-
$_templates protected
Cake\View\StringTemplate
StringTemplate instance.
-
$defaults protected
array<string, mixed>
Data defaults.
Method Summary
__construct() public
Constructor.
_emptyValue() protected
Generate the empty value based on the input.
_isDisabled() protected
Helper method for deciding what options are disabled.
_isSelected() protected
Helper method for deciding what options are selected.
_renderContent() protected
Render the contents of the select element.
_renderOptgroup() protected
Render the contents of an optgroup element.
_renderOptions() protected
Render a set of options.
mergeDefaults() protected
Merge default values with supplied data.
render() public
Render a select box form input.
secureFields() public
Returns a list of fields that need to be secured for this widget.
setMaxLength() protected
Set value for "maxlength" attribute if applicable.
setRequired() protected
Set value for "required" attribute if applicable.
setStep() protected
Set value for "step" attribute if applicable.
Method Detail
__construct() public
__construct(Cake\View\StringTemplate $templates)
Constructor.
Parameters
Cake\View\StringTemplate
$templates-
Templates list.
_emptyValue() protected
_emptyValue(array|string|bool $value): array
Generate the empty value based on the input.
Parameters
array|string|bool
$value-
The provided empty value.
Returns
array
_isDisabled() protected
_isDisabled(string $key, array<string>|null $disabled): bool
Helper method for deciding what options are disabled.
Parameters
string
$key-
The key to test.
array<string>|null
$disabled-
The disabled values.
Returns
bool
_isSelected() protected
_isSelected(string $key, array<string>|string|int|false|null $selected): bool
Helper method for deciding what options are selected.
Parameters
string
$key-
The key to test.
array<string>|string|int|false|null
$selected-
The selected values.
Returns
bool
_renderContent() protected
_renderContent(array<string, mixed> $data): array<string>
Render the contents of the select element.
Parameters
array<string, mixed>
$data-
The context for rendering a select.
Returns
array<string>
_renderOptgroup() protected
_renderOptgroup(string $label, ArrayAccess|array $optgroup, array|null $disabled, array|string|null $selected, array $templateVars, bool $escape): string
Render the contents of an optgroup element.
Parameters
string
$label-
The optgroup label text
ArrayAccess|array
$optgroup-
The opt group data.
array|null
$disabled-
The options to disable.
array|string|null
$selected-
The options to select.
array
$templateVars-
Additional template variables.
bool
$escape-
Toggle HTML escaping
Returns
string
_renderOptions() protected
_renderOptions(iterable $options, array<string>|null $disabled, array|string|null $selected, array $templateVars, bool $escape): array<string>
Render a set of options.
Will recursively call itself when option groups are in use.
Parameters
iterable
$options-
The options to render.
array<string>|null
$disabled-
The options to disable.
array|string|null
$selected-
The options to select.
array
$templateVars-
Additional template variables.
bool
$escape-
Toggle HTML escaping.
Returns
array<string>
mergeDefaults() protected
mergeDefaults(array<string, mixed> $data, Cake\View\Form\ContextInterface $context): array<string, mixed>
Merge default values with supplied data.
Parameters
array<string, mixed>
$data-
Data array
Cake\View\Form\ContextInterface
$context-
Context instance.
Returns
array<string, mixed>
render() public
render(array<string, mixed> $data, Cake\View\Form\ContextInterface $context): string
Render a select box form input.
Render a select box input given a set of data. Supported keys are:
name
- Set the input name.options
- An array of options.disabled
- Either true or an array of options to disable. When true, the select element will be disabled.val
- Either a string or an array of options to mark as selected.empty
- Set to true to add an empty option at the top of the option elements. Set to a string to define the display text of the empty option. If an array is used the key will set the value of the empty option while, the value will set the display text.escape
- Set to false to disable HTML escaping.
Options format
The options option can take a variety of data format depending on the complexity of HTML you want generated.
You can generate simple options using a basic associative array:
'options' => ['elk' => 'Elk', 'beaver' => 'Beaver']
If you need to define additional attributes on your option elements you can use the complex form for options:
'options' => [
['value' => 'elk', 'text' => 'Elk', 'data-foo' => 'bar'],
]
This form requires that both the value
and text
keys be defined. If either is not set options will not be generated correctly.
If you need to define option groups you can do those using nested arrays:
'options' => [
'Mammals' => [
'elk' => 'Elk',
'beaver' => 'Beaver'
]
]
And finally, if you need to put attributes on your optgroup elements you can do that with a more complex nested array form:
'options' => [
[
'text' => 'Mammals',
'data-id' => 1,
'options' => [
'elk' => 'Elk',
'beaver' => 'Beaver'
]
],
]
You are free to mix each of the forms in the same option set, and nest complex types as required.
Parameters
array<string, mixed>
$data-
Data to render with.
Cake\View\Form\ContextInterface
$context-
The current form context.
Returns
string
Throws
RuntimeException
when the name attribute is empty.
secureFields() public
secureFields(array<string, mixed> $data): array<string>
Returns a list of fields that need to be secured for this widget.
Parameters
array<string, mixed>
$data
Returns
array<string>
setMaxLength() protected
setMaxLength(array<string, mixed> $data, Cake\View\Form\ContextInterface $context, string $fieldName): array<string, mixed>
Set value for "maxlength" attribute if applicable.
Parameters
array<string, mixed>
$data-
Data array
Cake\View\Form\ContextInterface
$context-
Context instance.
string
$fieldName-
Field name.
Returns
array<string, mixed>
setRequired() protected
setRequired(array<string, mixed> $data, Cake\View\Form\ContextInterface $context, string $fieldName): array<string, mixed>
Set value for "required" attribute if applicable.
Parameters
array<string, mixed>
$data-
Data array
Cake\View\Form\ContextInterface
$context-
Context instance.
string
$fieldName-
Field name.
Returns
array<string, mixed>
setStep() protected
setStep(array<string, mixed> $data, Cake\View\Form\ContextInterface $context, string $fieldName): array<string, mixed>
Set value for "step" attribute if applicable.
Parameters
array<string, mixed>
$data-
Data array
Cake\View\Form\ContextInterface
$context-
Context instance.
string
$fieldName-
Field name.
Returns
array<string, mixed>
Property Detail
$_templates protected
StringTemplate instance.
Type
Cake\View\StringTemplate
$defaults protected
Data defaults.
Type
array<string, mixed>
© 2005–present The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
https://api.cakephp.org/4.4/class-Cake.View.Widget.SelectBoxWidget.html