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.
\Cake\View\StringTemplate
StringTemplate instance.
array
Data defaults.
__construct(\Cake\View\StringTemplate $templates)
Constructor.
\Cake\View\StringTemplate
$templates Templates list.
_emptyValue(mixed $value)
Generate the empty value based on the input.
string|bool|array
$value The provided empty value.
array
The generated option key/value.
_isDisabled(string $key, ?array $disabled)
Helper method for deciding what options are disabled.
string
$key The key to test.
string[]|null
$disabled The disabled values.
bool
_isSelected(string $key, mixed $selected)
Helper method for deciding what options are selected.
string
$key The key to test.
string[]|string|false|null
$selected The selected values.
bool
_renderContent(array $data)
Render the contents of the select element.
array
$data The context for rendering a select.
array
_renderOptgroup(string $label, mixed $optgroup, ?array $disabled, mixed $selected, mixed $templateVars, mixed $escape)
Render the contents of an optgroup element.
string
$label The optgroup label text
array|\ArrayAccess
$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
string
Formatted template string
_renderOptions(iterable $options, ?array $disabled, mixed $selected, mixed $templateVars, mixed $escape)
Render a set of options.
Will recursively call itself when option groups are in use.
iterable
$options The options to render.
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.
string[]
Option elements.
mergeDefaults(array $data, \Cake\View\Form\ContextInterface $context)
Merge default values with supplied data.
array
$data Data array
\Cake\View\Form\ContextInterface
$context Context instance.
array
Updated data array.
render(array $data, \Cake\View\Form\ContextInterface $context)
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.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.
array
$data Data to render with.
\Cake\View\Form\ContextInterface
$context The current form context.
string
A generated select box.
RuntimeException
secureFields(array $data)
Returns a list of fields that need to be secured for this widget.
array
$data The data to render.
string[]
Array of fields to secure.
setMaxLength(array $data, \Cake\View\Form\ContextInterface $context, string $fieldName)
Set value for "maxlength" attribute if applicable.
array
$data Data array
\Cake\View\Form\ContextInterface
$context Context instance.
string
$fieldName Field name.
array
Updated data array.
setRequired(array $data, \Cake\View\Form\ContextInterface $context, string $fieldName)
Set value for "required" attribute if applicable.
array
$data Data array
\Cake\View\Form\ContextInterface
$context Context instance.
string
$fieldName Field name.
array
Updated data array.
setStep(array $data, \Cake\View\Form\ContextInterface $context, string $fieldName)
Set value for "step" attribute if applicable.
array
$data Data array
\Cake\View\Form\ContextInterface
$context Context instance.
string
$fieldName Field name.
array
Updated data array.
StringTemplate instance.
\Cake\View\StringTemplate
Data defaults.
array
© 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.1/class-Cake.View.Widget.SelectBoxWidget.html