protected function ViewfieldWidgetSelect::formMultipleElements in Viewfield 8.3
Special handling to create form elements for multiple values.
Handles generic features for multiple fields:
- number of widgets
- AHAH-'add more' button
- table display and drag-n-drop value reordering
Overrides WidgetBase::formMultipleElements
File
- src/
Plugin/ Field/ FieldWidget/ ViewfieldWidgetSelect.php, line 167
Class
- ViewfieldWidgetSelect
- Plugin implementation of the 'viewfield_select' widget.
Namespace
Drupal\viewfield\Plugin\Field\FieldWidgetCode
protected function formMultipleElements(FieldItemListInterface $items, array &$form, FormStateInterface $form_state) {
$elements = parent::formMultipleElements($items, $form, $form_state);
// Must always show fields on configuration form.
if (!$this
->isDefaultValueWidget($form_state) && $this
->getFieldSetting('force_default')) {
$elements['#access'] = FALSE;
}
$max_delta = $elements['#max_delta'];
$is_multiple = $elements['#cardinality_multiple'];
if ($is_multiple) {
for ($delta = 0; $delta <= $max_delta; $delta++) {
$element =& $elements[$delta];
// Change title to 'View #'.
$element['target_id']['#title'] = $this
->t('View @number', [
'@number' => $delta + 1,
]);
// Force title display.
$element['target_id']['#title_display'] = 'before';
}
}
else {
// $max_delta == 0 for this case.
$element =& $elements[0];
// Change title to simply 'View'.
$element['target_id']['#title'] = $this
->t('View');
// Wrap single values in a fieldset unless on the default settings form,
// as long as the field is visible (!force_default).
if (!$this
->isDefaultValueWidget($form_state) && !$this
->getFieldSetting('force_default')) {
$element += [
'#type' => 'fieldset',
'#title' => $this->fieldDefinition
->getLabel(),
];
}
}
return $elements;
}