Skip to content
Snippets Groups Projects

Issue #3206256: Ability to mark options as required

1 unresolved thread
Files
2
+ 18
3
@@ -37,7 +37,7 @@ abstract class OptionBase extends PluginBase implements OptionInterface {
* @var array
*/
protected $optionalAttributes =
['weight', 'allowed_regions'];
['required', 'weight', 'allowed_regions'];
/**
* {@inheritdoc}
@@ -316,6 +316,9 @@ abstract class OptionBase extends PluginBase implements OptionInterface {
'#type' => 'textfield',
'#default_value' => !empty($default) ? $default : '',
];
if (isset($def['required'])) {
$formRenderArray['#required'] = $def['required'];
}
if (isset($def['weight'])) {
$formRenderArray['#weight'] = $def['weight'];
}
@@ -361,13 +364,19 @@ abstract class OptionBase extends PluginBase implements OptionInterface {
'#type' => 'select',
// @phpstan-ignore-next-line
'#options' => $this->translateOptions($def['options']),
'#empty_option' => $this->t('- None -'),
'#empty_value' => '',
'#default_value' => $default,
];
if ($def['multi']) {
$formRenderArray['#multiple'] = TRUE;
}
if (isset($def['required'])) {
$formRenderArray['#required'] = $def['required'];
}
else {
$emptyOption = !empty($def['empty_option']) ? $def['empty_option'] : '- None -';
    • empty_option and empty_value should not be related to require. This is handled in the select render element.

      Also if no empty_option is provided do not set it and then it will rely on the render element default behavior.

Please register or sign in to reply
$formRenderArray['#empty_option'] = $this->t($emptyOption);
$formRenderArray['#empty_value'] = '';
}
if (isset($def['weight'])) {
$formRenderArray['#weight'] = $def['weight'];
}
@@ -418,6 +427,9 @@ abstract class OptionBase extends PluginBase implements OptionInterface {
if ($def['inline']) {
$formRenderArray['#attributes'] = ['class' => ['container-inline']];
}
if (isset($def['required'])) {
$formRenderArray['#required'] = $def['required'];
}
if (isset($def['weight'])) {
$formRenderArray['#weight'] = $def['weight'];
}
@@ -468,6 +480,9 @@ abstract class OptionBase extends PluginBase implements OptionInterface {
if ($def['inline']) {
$formRenderArray['#attributes'] = ['class' => ['container-inline']];
}
if (isset($def['required'])) {
$formRenderArray['#required'] = $def['required'];
}
if (isset($def['weight'])) {
$formRenderArray['#weight'] = $def['weight'];
}
Loading