\Charcoal\Admin\Property\InputStructureWidgetInput

Structure Widget Form Field

Allows UI widgets to be embedded into a form field and rendered using the current object, if any.

Based on \Charcoal\Admin\Widget\FormGroup\NestedWidgetFormGroup.

Summary

Methods
Properties
Constants
setDependencies()
setFormGroup()
formGroup()
widget()
getWidget()
setWidgetData()
mergeWidgetData()
addWidgetData()
widgetData()
defaultWidgetData()
widgetDataAsJson()
renderableData()
setRenderableData()
__construct()
setData()
setPropertyVal()
propertyVal()
setLang()
lang()
hidden()
setIdent()
ident()
setReadOnly()
readOnly()
setRequired()
required()
setDisabled()
disabled()
setMultiple()
multiple()
setPlaceholder()
placeholder()
setInputId()
inputId()
setInputClass()
inputClass()
setInputName()
inputName()
inputVal()
setInputMode()
inputMode()
setInputType()
inputType()
hasInputAffix()
setInputPrefix()
inputPrefix()
setInputSuffix()
inputSuffix()
setType()
type()
propertyIdent()
setProperty()
property()
p()
renderTranslatableTemplate()
No public properties found
DEFAULT_INPUT_TYPE
setWidgetFactory()
widgetFactory()
setFormGroupFactory()
formGroupFactory()
createWidget()
resolveWidget()
renderDataRecursive()
renderData()
createMetadata()
generateInputId()
getter()
setter()
$widget
$type
$inputType
$inputMode
$inputName
$inputId
$inputClass
$inputPrefix
$inputSuffix
N/A
parseDataToken()
filterDataToken()
camelize()
$widgetFactory
$formGroupFactory
$formGroup
$widgetData
$renderableData
$lang
$ident
$readOnly
$required
$disabled
$multiple
$placeholder
$propertyData
$propertyVal
$property
N/A

Constants

DEFAULT_INPUT_TYPE

DEFAULT_INPUT_TYPE

Properties

$widget

$widget : \Charcoal\App\Template\WidgetInterface

Store the nested widget.

Type

\Charcoal\App\Template\WidgetInterface

$type

$type : string

The control type for the HTML element `<input>`.

Type

string

$inputType

$inputType : string

Type

string

$inputMode

$inputMode : string

Type

string

$inputName

$inputName : string

Type

string

$inputId

$inputId : string

Type

string

$inputClass

$inputClass : string

Type

string

$inputPrefix

$inputPrefix : \Charcoal\Translator\Translation|string|null

The control's prefix.

Type

\Charcoal\Translator\Translation|string|null

$inputSuffix

$inputSuffix : \Charcoal\Translator\Translation|string|null

The control's suffix.

Type

\Charcoal\Translator\Translation|string|null

$widgetFactory

$widgetFactory : \Charcoal\Factory\FactoryInterface

Store the widget factory instance for the current class.

Type

\Charcoal\Factory\FactoryInterface

$formGroupFactory

$formGroupFactory : \Charcoal\Factory\FactoryInterface

Store the form group widget factory instance for the current class.

Type

\Charcoal\Factory\FactoryInterface

$formGroup

$formGroup : \Charcoal\Ui\FormGroup\FormGroupInterface

The form group the input belongs to.

Type

\Charcoal\Ui\FormGroup\FormGroupInterface

$widgetData

$widgetData : array

Settings for the nested widget.

Type

array

$renderableData

$renderableData : array

Settings, to be rendered, for the nested widget.

Type

array

$lang

$lang : string

Type

string

$ident

$ident : string

Type

string

$readOnly

$readOnly : boolean

Type

boolean

$required

$required : boolean

Type

boolean

$disabled

$disabled : boolean

Type

boolean

$multiple

$multiple : boolean

Type

boolean

$placeholder

$placeholder : \Charcoal\Translator\Translation|string|null

Type

\Charcoal\Translator\Translation|string|null

$propertyData

$propertyData : array

Type

array

$propertyVal

$propertyVal : mixed

Type

mixed

$property

$property : \Charcoal\Property\PropertyInterface

Type

\Charcoal\Property\PropertyInterface

Methods

setDependencies()

setDependencies(\Pimple\Container  $container) : void

Inject dependencies from a DI Container.

Parameters

\Pimple\Container $container

A dependencies container instance.

setFormGroup()

setFormGroup(\Charcoal\Ui\FormGroup\FormGroupInterface  $formGroup) : \Charcoal\Ui\FormInput\FormInputInterface

Set the form input's parent group.

Parameters

\Charcoal\Ui\FormGroup\FormGroupInterface $formGroup

The parent form group object.

Returns

\Charcoal\Ui\FormInput\FormInputInterface —

Chainable

formGroup()

formGroup() : \Charcoal\Ui\FormGroup\FormGroupInterface

Retrieve the input's parent group.

Returns

\Charcoal\Ui\FormGroup\FormGroupInterface

widget()

widget() : \Charcoal\App\Template\WidgetInterface|\Charcoal\Admin\Ui\Generator

Yield the nested widget.

Returns

\Charcoal\App\Template\WidgetInterface|\Charcoal\Admin\Ui\Generator

getWidget()

getWidget() : \Charcoal\App\Template\WidgetInterface

Retrieve the nested widget.

Returns

\Charcoal\App\Template\WidgetInterface

setWidgetData()

setWidgetData(array  $settings) : self

Set the nested widget's options.

This method always merges default settings.

Parameters

array $settings

The nested widget options.

Returns

self

mergeWidgetData()

mergeWidgetData(array  $settings) : self

Merge (replacing or adding) nested widget options.

Parameters

array $settings

The nested widget options.

Returns

self

addWidgetData()

addWidgetData(string  $key, mixed  $val) : self

Add (or replace) an nested widget option.

Parameters

string $key

The setting to add/replace.

mixed $val

The setting's value to apply.

Throws

\InvalidArgumentException

If the identifier is not a string.

Returns

self

widgetData()

widgetData(string|null  $key = null, mixed|null  $default = null) : mixed

Retrieve the nested widget's options or a single option.

Parameters

string|null $key

The option key to lookup.

mixed|null $default

The fallback value to return if the $key doesn't exist.

Returns

mixed

defaultWidgetData()

defaultWidgetData() : array

Retrieve the default structure widget options.

Returns

array

widgetDataAsJson()

widgetDataAsJson() : string

Retrieve the nested widget's options as a JSON string.

Returns

string —

Returns data serialized with {@see json_encode()}.

renderableData()

renderableData() : array

Retrieve the nested widget's renderable options.

Returns

array

setRenderableData()

setRenderableData(array  $data) : self

Set the nested widget's renderable options.

Parameters

array $data

The data to render.

Returns

self

__construct()

__construct(array|\ArrayAccess  $data = null) 

Parameters

array|\ArrayAccess $data

Constructor data.

setData()

setData(array  $data) : \Charcoal\Admin\Property\AbstractPropertyInput

This function takes an array and fill the model object with its value.

This method either calls a setter for each key (set_{$key}()) or sets a public member.

For example, calling with setData(['properties'=>$properties]) would call setProperties($properties), becasue setProperties() exists.

But calling with setData(['foobar'=>$foo]) would set the $foobar member on the metadata object, because the method set_foobar() does not exist.

Parameters

array $data

The input data.

Returns

\Charcoal\Admin\Property\AbstractPropertyInput

Chainable

propertyVal()

propertyVal() : mixed

Returns

mixed

lang()

lang() : string

Get the input language

Returns

string

hidden()

hidden() : boolean

Returns

boolean

setIdent()

setIdent(string  $ident) : \Charcoal\Admin\Property\Widget

Parameters

string $ident

Input identifier.

Throws

\InvalidArgumentException

If the ident is not a string.

Returns

\Charcoal\Admin\Property\Widget —

Chainable

ident()

ident() : string

Returns

string

setReadOnly()

setReadOnly(boolean  $readOnly) : \Charcoal\Admin\Property\Widget

Parameters

boolean $readOnly

The read-only flag.

Returns

\Charcoal\Admin\Property\Widget —

(Chainable)

readOnly()

readOnly() : boolean

Returns

boolean

setRequired()

setRequired(boolean  $required) : \Charcoal\Admin\Property\Widget

Parameters

boolean $required

Required flag.

Returns

\Charcoal\Admin\Property\Widget —

(Chainable)

required()

required() : boolean

Returns

boolean

setDisabled()

setDisabled(boolean  $disabled) : \Charcoal\Admin\Property\Widget

Parameters

boolean $disabled

Disabled flag.

Returns

\Charcoal\Admin\Property\Widget —

(Chainable)

disabled()

disabled() : boolean

Returns

boolean

setMultiple()

setMultiple(boolean  $multiple) : \Charcoal\Admin\Property\Widget

Parameters

boolean $multiple

Multiple flag.

Returns

\Charcoal\Admin\Property\Widget —

(Chainable)

multiple()

multiple() : boolean

Returns

boolean

setPlaceholder()

setPlaceholder(mixed  $placeholder) : \Charcoal\Admin\Property\AbstractPropertyInput

Set the form control's placeholder.

A placeholder is a hint to the user of what can be entered in the property control.

Parameters

mixed $placeholder

The placeholder attribute.

Returns

\Charcoal\Admin\Property\AbstractPropertyInput

Chainable

placeholder()

placeholder() : \Charcoal\Translator\Translation|string|null

Retrieve the placeholder.

Returns

\Charcoal\Translator\Translation|string|null

setInputId()

setInputId(string  $inputId) : \Charcoal\Admin\Property\AbstractPropertyInput

Set the input ID.

Used for the HTML "ID" attribute.

Parameters

string $inputId

HTML input id attribute.

Returns

\Charcoal\Admin\Property\AbstractPropertyInput

Chainable

inputId()

inputId() : string

Retrieve the input ID.

If none was previously set then a unique random one will be generated.

Returns

string

setInputClass()

setInputClass(string  $inputClass) : \Charcoal\Admin\Property\AbstractPropertyInput

Parameters

string $inputClass

The input class attribute.

Throws

\InvalidArgumentException

If the class is not a string.

Returns

\Charcoal\Admin\Property\AbstractPropertyInput

Chainable

inputClass()

inputClass() : string

Returns

string

setInputName()

setInputName(string  $inputName) : \Charcoal\Admin\Property\AbstractPropertyInput

Set the input name.

Used for the HTML "name" attribute.

Parameters

string $inputName

HTML input id attribute.

Returns

\Charcoal\Admin\Property\AbstractPropertyInput

Chainable

inputName()

inputName() : string

Retrieve the input name.

The input name should always be the property's ident.

Returns

string

inputVal()

inputVal() : string

Throws

\UnexpectedValueException

If the value is invalid.

Returns

string

setInputMode()

setInputMode(string  $inputMode) : \Charcoal\Admin\Property\AbstractPropertyInput

Set the hint to the browser for which keyboard to display.

Parameters

string $inputMode

The input type.

Throws

\InvalidArgumentException

If the provided argument is not a string.

Returns

\Charcoal\Admin\Property\AbstractPropertyInput

Chainable

inputMode()

inputMode() : string

Retrieve the hint to the browser for which keyboard to display.

Returns

string

setInputType()

setInputType(string  $inputType) : \Charcoal\Admin\Property\AbstractPropertyInput

Parameters

string $inputType

The input type.

Throws

\InvalidArgumentException

If the provided argument is not a string.

Returns

\Charcoal\Admin\Property\AbstractPropertyInput

Chainable

inputType()

inputType() : string

Returns

string

hasInputAffix()

hasInputAffix() : boolean

Determine if the property has an affix.

Textual <input>s only

Avoid using <select> elements here as they cannot be fully styled in WebKit browsers.

Avoid using <textarea> elements here as their rows attribute will not be respected in some cases.

Returns

boolean

setInputPrefix()

setInputPrefix(mixed  $affix) : self

Retrieve the control's prefix.

Parameters

mixed $affix

Text to display before the control.

Throws

\InvalidArgumentException

If the suffix is not translatable.

Returns

self

inputPrefix()

inputPrefix() : \Charcoal\Translator\Translation|string|null

Retrieve the control's prefix.

Returns

\Charcoal\Translator\Translation|string|null

setInputSuffix()

setInputSuffix(mixed  $affix) : self

Retrieve the control's suffix.

Parameters

mixed $affix

Text to display after the control.

Throws

\InvalidArgumentException

If the suffix is not translatable.

Returns

self

inputSuffix()

inputSuffix() : \Charcoal\Translator\Translation|string|null

Retrieve the control's suffix.

Returns

\Charcoal\Translator\Translation|string|null

setType()

setType(string  $type) : \Charcoal\Admin\Property\AbstractPropertyInput

Set the control type for the HTML element `<input>`.

Parameters

string $type

The control type.

Throws

\InvalidArgumentException

If the provided argument is not a string.

Returns

\Charcoal\Admin\Property\AbstractPropertyInput

Chainable

type()

type() : string

Retrieve the control type for the HTML element `<input>`.

Returns

string

propertyIdent()

propertyIdent() : string

Returns

string

setProperty()

setProperty(\Charcoal\Property\PropertyInterface  $p) : \Charcoal\Admin\Property\AbstractPropertyInput

Parameters

\Charcoal\Property\PropertyInterface $p

The property.

Returns

\Charcoal\Admin\Property\AbstractPropertyInput

Chainable

property()

property() : \Charcoal\Property\PropertyInterface

Returns

\Charcoal\Property\PropertyInterface

p()

p() : \Charcoal\Property\PropertyInterface

Alias of {@see self::property()}

Returns

\Charcoal\Property\PropertyInterface

renderTranslatableTemplate()

renderTranslatableTemplate(mixed  $templateString) : string

Render the given template from string.

Parameters

mixed $templateString

The template to render.

Returns

string —

The rendered template.

setWidgetFactory()

setWidgetFactory(\Charcoal\Factory\FactoryInterface  $factory) : self

Set the widget factory.

Parameters

\Charcoal\Factory\FactoryInterface $factory

The factory to create widgets.

Returns

self

widgetFactory()

widgetFactory() : \Charcoal\Factory\FactoryInterface

Retrieve the widget factory.

Throws

\RuntimeException

If the widget factory was not previously set.

Returns

\Charcoal\Factory\FactoryInterface

setFormGroupFactory()

setFormGroupFactory(\Charcoal\Factory\FactoryInterface  $factory) : self

Set the form group factory.

Parameters

\Charcoal\Factory\FactoryInterface $factory

The factory to create form groups.

Returns

self

formGroupFactory()

formGroupFactory() : \Charcoal\Factory\FactoryInterface

Retrieve the form group factory.

Throws

\RuntimeException

If the form group factory was not previously set.

Returns

\Charcoal\Factory\FactoryInterface

createWidget()

createWidget() : \Charcoal\App\Template\WidgetInterface

Create the nested widget.

Throws

\DomainException

If the widget is not a structure widget.

Returns

\Charcoal\App\Template\WidgetInterface

resolveWidget()

resolveWidget(string  $type) : \Charcoal\App\Template\WidgetInterface

Resolve the nested widget.

Parameters

string $type

The widget to create.

Throws

\InvalidArgumentException

If the widget is invalid.

Returns

\Charcoal\App\Template\WidgetInterface

renderDataRecursive()

renderDataRecursive(array|\Traversable  $data) : array|\Traversable

Render the given data recursively.

Parameters

array|\Traversable $data

The data to render.

Throws

\InvalidArgumentException

If the data is not iterable.

\RuntimeException

If the form doesn't have a model.

Returns

array|\Traversable —

The rendered data.

renderData()

renderData(string  $data) : string

Render the given data.

Parameters

string $data

The data to render.

Returns

string —

The rendered data.

createMetadata()

createMetadata(array  $data = null) : \Charcoal\Property\PropertyMetadata

Parameters

array $data

Optional. Metadata data.

Returns

\Charcoal\Property\PropertyMetadata

generateInputId()

generateInputId() : string

Generate a unique input ID.

Returns

string

getter()

getter(string  $key) : string

Allow an object to define how the key getter are called.

Parameters

string $key

The key to get the getter from.

Returns

string —

The getter method name, for a given key.

setter()

setter(string  $key) : string

Allow an object to define how the key setter are called.

Parameters

string $key

The key to get the setter from.

Returns

string —

The setter method name, for a given key.

parseDataToken()

parseDataToken(string|array  $token) : string

Parse the given slug (URI token) for the current object.

Parameters

string|array $token

The token to parse relative to the model entry.

Throws

\InvalidArgumentException

If a route token is not a string.

Returns

string

filterDataToken()

filterDataToken(mixed  $value, string  $token = null) : string

Filter the given value for a URI.

Parameters

mixed $value

A value to filter.

string $token

The parsed token.

Returns

string —

The filtered $value.

camelize()

camelize(string  $str) : string

Transform a snake_case string to camelCase.

Parameters

string $str

The snake_case string to camelize.

Returns

string —

The camelCase string.