SelectViewHelper extends AbstractFormFieldViewHelper

FinalYes

This ViewHelper generates a :html:`<select>` dropdown list for the use with a form.

Basic usage

The most straightforward way is to supply an associative array as the options parameter. The array key is used as option key, and the value is used as human-readable name.

Basic usage::

<f:form.select name="paymentOptions" options="{payPal: 'PayPal International Services', visa: 'VISA Card'}" />

Pre select a value

To pre select a value, set value to the option key which should be selected. Default value::

<f:form.select name="paymentOptions" options="{payPal: 'PayPal International Services', visa: 'VISA Card'}" value="visa" />

Generates a dropdown box like above, except that "VISA Card" is selected.

If the select box is a multi-select box :html:multiple="1", then "value" can be an array as well.

Custom options and option group rendering

Child nodes can be used to create a completely custom set of :html:<option> and :html:<optgroup> tags in a way compatible with the HMAC generation. To do so, leave out the options argument and use child ViewHelpers:

Custom options and optgroup::

<f:form.select name="myproperty"> <f:form.select.option value="1">Option one</f:form.select.option> <f:form.select.option value="2">Option two</f:form.select.option> <f:form.select.optgroup> <f:form.select.option value="3">Grouped option one</f:form.select.option> <f:form.select.option value="4">Grouped option twi</f:form.select.option> </f:form.select.optgroup> </f:form.select>

.. note:: Do not use vanilla :html:<option> or :html:<optgroup> tags! They will invalidate the HMAC generation!

Usage on domain objects

If you want to output domain objects, you can just pass them as array into the options parameter. To define what domain object value should be used as option key, use the optionValueField variable. Same goes for optionLabelField. If neither is given, the Identifier (UID/uid) and the :php:__toString() method are tried as fallbacks.

If the optionValueField variable is set, the getter named after that value is used to retrieve the option key. If the optionLabelField variable is set, the getter named after that value is used to retrieve the option value.

If the prependOptionLabel variable is set, an option item is added in first position, bearing an empty string or - if provided, the value of the prependOptionValue variable as value.

Domain objects::

<f:form.select name="users" options="{userArray}" optionValueField="id" optionLabelField="firstName" />

In the above example, the userArray is an array of "User" domain objects, with no array key specified.

So, in the above example, the method :php:$user->getId() is called to retrieve the key, and :php:$user->getFirstName() to retrieve the displayed value of each entry.

The value property now expects a domain object, and tests for object equivalence.

Table of Contents

Properties

$configurationManager  : ConfigurationManagerInterface
$persistenceManager  : PersistenceManagerInterface
$respectSubmittedDataValue  : bool
$tagName  : string

Methods

getRespectSubmittedDataValue()  : bool
Getting the current configuration for respectSubmittedDataValue.
initializeArguments()  : void
injectConfigurationManager()  : void
injectPersistenceManager()  : void
render()  : string
setRespectSubmittedDataValue()  : void
Define respectSubmittedDataValue to enable or disable the usage of the submitted values in the viewhelper.
addAdditionalIdentityPropertiesIfNeeded()  : void
Add additional identity properties in case the current property is hierarchical (of the form "bla.blubb").
convertToPlainValue()  : mixed
Converts an arbitrary value to a plain value
getLastSubmittedFormData()  : mixed
Get the form data which has last been submitted; only returns valid data in case a property mapping error has occurred. Check with hasMappingErrorOccurred() before!
getMappingResultsForProperty()  : Result
Get errors for the property and form name of this ViewHelper
getName()  : string
Get the name of this form element.
getNameWithoutPrefix()  : string
Get the name of this form element, without prefix.
getOptions()  : array<string|int, mixed>
Render the option tags.
getOptionValueScalar()  : string
Get the option value for an object
getPropertyValue()  : mixed
Get the current property of the object bound to this form.
getRequest()  : RequestInterface
Shortcut for retrieving the request from the controller context
getSelectedValue()  : mixed
Retrieves the selected value(s)
getValueAttribute()  : mixed
Returns the current value of this Form ViewHelper and converts it to an identifier string in case it's an object The value is determined as follows: * If property mapping errors occurred and the form is re-displayed, the *last submitted* value is returned * If a "value" attribute was specified, this value is used (preferring an "override" from integrators) * Else the bound property value is returned (only in objectAccessor-mode)
getValueFromSubmittedFormData()  : mixed
If property mapping errors occurred and the form is re-displayed, the *last submitted* value is returned by this method.
hasMappingErrorOccurred()  : bool
Checks if a property mapping error has occurred in the last request.
isObjectAccessorMode()  : bool
Internal method which checks if we should evaluate a domain object or just output arguments['name'] and arguments['value']. Returns true if domoin object should be evaluated.
isSelected()  : bool
Render the option tags.
prefixFieldName()  : string
Prefixes / namespaces the given name with the form field prefix
registerFieldNameForFormTokenGeneration()  : void
Register a field name for inclusion in the HMAC / Form Token generation
renderHiddenFieldForEmptyValue()  : string
Renders a hidden field with the same name as the element, to make sure the empty value is submitted in case nothing is selected. This is needed for checkbox and multiple select fields
renderHiddenIdentityField()  : string
Renders a hidden form field containing the technical identity of the given object.
renderOptionTag()  : string
Render one option tag
renderOptionTags()  : string
Render the option tags.
renderPrependOptionTag()  : string
Render prepended option tag
setErrorClassAttribute()  : void
Add a CSS class if this ViewHelper has errors

Properties

$respectSubmittedDataValue

protected bool $respectSubmittedDataValue = false

$tagName

protected string $tagName = 'select'

Methods

getRespectSubmittedDataValue()

Getting the current configuration for respectSubmittedDataValue.

public getRespectSubmittedDataValue() : bool
Return values
bool

initializeArguments()

public initializeArguments() : void

render()

public render() : string
Return values
string

setRespectSubmittedDataValue()

Define respectSubmittedDataValue to enable or disable the usage of the submitted values in the viewhelper.

public setRespectSubmittedDataValue(bool $respectSubmittedDataValue) : void
Parameters
$respectSubmittedDataValue : bool

addAdditionalIdentityPropertiesIfNeeded()

Add additional identity properties in case the current property is hierarchical (of the form "bla.blubb").

protected addAdditionalIdentityPropertiesIfNeeded() : void

Then, [bla][__identity] has to be generated as well.

convertToPlainValue()

Converts an arbitrary value to a plain value

protected convertToPlainValue(mixed $value) : mixed
Parameters
$value : mixed

The value to convert

getLastSubmittedFormData()

Get the form data which has last been submitted; only returns valid data in case a property mapping error has occurred. Check with hasMappingErrorOccurred() before!

protected getLastSubmittedFormData() : mixed

getMappingResultsForProperty()

Get errors for the property and form name of this ViewHelper

protected getMappingResultsForProperty() : Result
Return values
Result

getName()

Get the name of this form element.

protected getName() : string

Either returns arguments['name'], or the correct name for Object Access. In case property is something like bla.blubb (hierarchical), then [bla][blubb] is generated.

Return values
string

getNameWithoutPrefix()

Get the name of this form element, without prefix.

protected getNameWithoutPrefix() : string
Return values
string

getOptions()

Render the option tags.

protected getOptions() : array<string|int, mixed>
Return values
array<string|int, mixed>

An associative array of options, key will be the value of the option tag

getOptionValueScalar()

Get the option value for an object

protected getOptionValueScalar(mixed $valueElement) : string
Parameters
$valueElement : mixed
Return values
string

@todo: Does not always return string ...

getPropertyValue()

Get the current property of the object bound to this form.

protected getPropertyValue() : mixed
Return values
mixed

Value

getRequest()

Shortcut for retrieving the request from the controller context

protected getRequest() : RequestInterface
Return values
RequestInterface

The extbase (!) request. All these VH's are extbase-only.

getSelectedValue()

Retrieves the selected value(s)

protected getSelectedValue() : mixed
Return values
mixed

value string or an array of strings

getValueAttribute()

Returns the current value of this Form ViewHelper and converts it to an identifier string in case it's an object The value is determined as follows: * If property mapping errors occurred and the form is re-displayed, the *last submitted* value is returned * If a "value" attribute was specified, this value is used (preferring an "override" from integrators) * Else the bound property value is returned (only in objectAccessor-mode)

protected getValueAttribute() : mixed

Note: This method should not be used for form elements that must not change the value attribute, e.g. (radio) buttons and checkboxes.

Return values
mixed

Value

getValueFromSubmittedFormData()

If property mapping errors occurred and the form is re-displayed, the *last submitted* value is returned by this method.

protected getValueFromSubmittedFormData(mixed $value) : mixed

Note: This method should not be used for form elements that must not change the value attribute, e.g. (radio) buttons and checkboxes. The default behaviour is not to use this method. You need to set respectSubmittedDataValue to TRUE to enable the form data handling for the viewhelper.

Parameters
$value : mixed
Return values
mixed

Value

hasMappingErrorOccurred()

Checks if a property mapping error has occurred in the last request.

protected hasMappingErrorOccurred() : bool
Return values
bool

isObjectAccessorMode()

Internal method which checks if we should evaluate a domain object or just output arguments['name'] and arguments['value']. Returns true if domoin object should be evaluated.

protected isObjectAccessorMode() : bool
Return values
bool

isSelected()

Render the option tags.

protected isSelected(mixed $value) : bool
Parameters
$value : mixed

Value to check for

Return values
bool

True if the value should be marked as selected.

prefixFieldName()

Prefixes / namespaces the given name with the form field prefix

protected prefixFieldName(string $fieldName) : string
Parameters
$fieldName : string
Return values
string

registerFieldNameForFormTokenGeneration()

Register a field name for inclusion in the HMAC / Form Token generation

protected registerFieldNameForFormTokenGeneration(string $fieldName) : void
Parameters
$fieldName : string

renderHiddenFieldForEmptyValue()

Renders a hidden field with the same name as the element, to make sure the empty value is submitted in case nothing is selected. This is needed for checkbox and multiple select fields

protected renderHiddenFieldForEmptyValue() : string
Return values
string

renderHiddenIdentityField()

Renders a hidden form field containing the technical identity of the given object.

protected renderHiddenIdentityField(object|null $object, string|null $name) : string
Parameters
$object : object|null

Object to create the identity field for

$name : string|null

Name

Tags
see
Argument::setValue()
Return values
string

A hidden field containing the Identity (uid) of the given object

renderOptionTag()

Render one option tag

protected renderOptionTag(string $value, string $label, bool $isSelected) : string
Parameters
$value : string

value attribute of the option tag (will be escaped)

$label : string

content of the option tag (will be escaped)

$isSelected : bool

specifies whether to add selected attribute

Return values
string

the rendered option tag

renderOptionTags()

Render the option tags.

protected renderOptionTags(array<string|int, mixed> $options) : string
Parameters
$options : array<string|int, mixed>
Return values
string

renderPrependOptionTag()

Render prepended option tag

protected renderPrependOptionTag() : string
Return values
string

setErrorClassAttribute()

Add a CSS class if this ViewHelper has errors

protected setErrorClassAttribute() : void

        
On this page

Search results