Class SelectBoxWidget
Input widget class for generating a selectbox.
This class is intended as an internal implementation detail of Cake\View\Helper\FormHelper and is not intended for direct use.
- Cake\View\Widget\BasicWidget implements Cake\View\Widget\WidgetInterface
-
Cake\View\Widget\SelectBoxWidget
Inherited Properties
Method Summary
- _emptyValue() protectedGenerate the empty value based on the input.
- _isDisabled() protectedHelper method for deciding what options are disabled.
- _isSelected() protectedHelper method for deciding what options are selected.
- _renderContent() protectedRender the contents of the select element.
- _renderOptgroup() protectedRender the contents of an optgroup element.
- _renderOptions() protectedRender a set of options.
- render() publicRender a select box form input.
Method Detail
_emptyValue()source protected
_emptyValue( string|boolean|array $value )
Generate the empty value based on the input.
Parameters
- string|boolean|array
$value
- The provided empty value.
Returns
arrayThe generated option key/value.
_isDisabled()source protected
_isDisabled( string $key , array|null $disabled )
Helper method for deciding what options are disabled.
Parameters
- string
$key
- The key to test.
- array|null
$disabled
- The disabled values.
Returns
boolean_isSelected()source protected
_isSelected( string $key , array|string|null $selected )
Helper method for deciding what options are selected.
Parameters
- string
$key
- The key to test.
- array|string|null
$selected
- The selected values.
Returns
boolean_renderContent()source protected
_renderContent( array $data )
Render the contents of the select element.
Parameters
- array
$data
- The context for rendering a select.
Returns
array_renderOptgroup()source protected
_renderOptgroup( string $label , array $optgroup , array|null $disabled , array|string|null $selected , array $templateVars , boolean $escape )
Render the contents of an optgroup element.
Parameters
- string
$label
- The optgroup label text
- 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.
- boolean
$escape
- Toggle HTML escaping
Returns
stringFormatted template string
_renderOptions()source protected
_renderOptions( array $options , array|null $disabled , array|string|null $selected , array $templateVars , boolean $escape )
Render a set of options.
Will recursively call itself when option groups are in use.
Parameters
- array
$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.
- boolean
$escape
- Toggle HTML escaping.
Returns
arrayOption elements.
render()source public
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.
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
$data
- Data to render with.
-
Cake\View\Form\ContextInterface
$context
- The current form context.
Returns
stringA generated select box.
Throws
RuntimeExceptionwhen the name attribute is empty.
Overrides
Cake\View\Widget\BasicWidget::render()
Methods inherited from Cake\View\Widget\BasicWidget
__construct()source public
__construct( Cake\View\StringTemplate $templates )
Constructor.
Parameters
-
Cake\View\StringTemplate
$templates
- Templates list.
secureFields()source public
secureFields( array $data )
Returns a list of fields that need to be secured for this widget. Fields are in the form of Model[field][suffix]
Parameters
- array
$data
- The data to render.
Returns
arrayArray of fields to secure.
Implementation of
Cake\View\Widget\WidgetInterface::secureFields()
© 2005–2017 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/3.4/class-Cake.View.Widget.SelectBoxWidget.html