Skip to content
Snippets Groups Projects

Fix field cardinality logic.

Merged Adam Zimmermann requested to merge issue/tagify-3485855:3485855-changing-field-value into 1.2.x
@@ -150,15 +150,18 @@ class TagifySelectWidget extends OptionsWidgetBase {
public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state) {
$element = parent::formElement($items, $delta, $element, $form, $form_state);
$target_type = $this->getFieldSetting('target_type');
// User field definition doesn't have fieldStorage defined.
$cardinality = $target_type !== 'user'
? $items->getFieldDefinition()->getFieldStorageDefinition()->isMultiple()
: '';
$tags_identifier = $items->getName();
// Concat element position to the Tagify identifier.
if (!empty($element['#field_parents'][1])) {
$tags_identifier .= '_' . $element['#field_parents'][1];
}
$element += [
'#type' => 'select_tagify',
'#options' => $this->getOptions($items->getEntity()),
@@ -168,7 +171,7 @@ class TagifySelectWidget extends OptionsWidgetBase {
'class' => [$tags_identifier],
],
// Do not display a 'multiple' select box if there is only one option.
'#multiple' => ($this->multiple && count($this->options) > 1) || !$cardinality,
'#multiple' => ($this->multiple && count($this->options) > 1),
'#cardinality' => $items->getFieldDefinition()
->getFieldStorageDefinition()
->getCardinality(),
@@ -178,6 +181,11 @@ class TagifySelectWidget extends OptionsWidgetBase {
'#identifier' => $tags_identifier,
];
// Only add '#empty_value' if the field is not mandatory.
if (!$cardinality && !$items->getFieldDefinition()->isRequired()) {
$element['#empty_value'] = 0;
}
// Add description if it doesn't exist.
if ($target_type) {
$entity_definition = $this->entityTypeManager->getDefinition($target_type);
Loading