public function ElasticsearchViewsEntityField::buildOptionsForm in Elasticsearch Connector 8.2
Same name and namespace in other branches
- 8.7 modules/elasticsearch_connector_views/src/Plugin/views/field/ElasticsearchViewsEntityField.php \Drupal\elasticsearch_connector_views\Plugin\views\field\ElasticsearchViewsEntityField::buildOptionsForm()
- 8.5 modules/elasticsearch_connector_views/src/Plugin/views/field/ElasticsearchViewsEntityField.php \Drupal\elasticsearch_connector_views\Plugin\views\field\ElasticsearchViewsEntityField::buildOptionsForm()
- 8.6 modules/elasticsearch_connector_views/src/Plugin/views/field/ElasticsearchViewsEntityField.php \Drupal\elasticsearch_connector_views\Plugin\views\field\ElasticsearchViewsEntityField::buildOptionsForm()
Default options form that provides the label widget that all fields should have.
Overrides EntityField::buildOptionsForm
File
- modules/
elasticsearch_connector_views/ src/ Plugin/ views/ field/ ElasticsearchViewsEntityField.php, line 109
Class
- ElasticsearchViewsEntityField
- Displays entity field data.
Namespace
Drupal\elasticsearch_connector_views\Plugin\views\fieldCode
public function buildOptionsForm(&$form, FormStateInterface $form_state) {
$form['field_rendering'] = array(
'#type' => 'checkbox',
'#title' => $this
->t('Use entity field rendering'),
'#description' => $this
->t("If checked, Drupal's built-in field rendering mechanism will be used for rendering this field's values, which requires the entity to be loaded. If unchecked, a type-specific, entity-independent rendering mechanism will be used."),
'#default_value' => $this->options['field_rendering'],
);
// Wrap the (immediate) parent options in their own field set, to clean up
// the UI when (un)checking the above checkbox.
$form['parent_options'] = array(
'#type' => 'fieldset',
'#title' => $this
->t('Render settings'),
'#states' => array(
'visible' => array(
':input[name="options[field_rendering]"]' => array(
'checked' => TRUE,
),
),
),
);
// Include the parent options form and move all fields that were added by
// our direct parent (\Drupal\views\Plugin\views\field\Field) to the
// "parent_options" fieldset.
parent::buildOptionsForm($form, $form_state);
$parent_keys = array(
'multiple_field_settings',
'click_sort_column',
'type',
'field_api_classes',
'settings',
);
foreach ($parent_keys as $key) {
if (!empty($form[$key])) {
$form[$key]['#fieldset'] = 'parent_options';
}
}
// The Core boolean formatter hard-codes the field name to "field_boolean".
// This breaks the parent class's call of rewriteStatesSelector() for fixing
// "#states". We therefore apply that behavior again here.
if (!empty($form['settings'])) {
FormHelper::rewriteStatesSelector($form['settings'], "fields[field_boolean][settings_edit_form]", 'options');
}
// Get the options form for the fallback handler.
$fallback_form = array();
$this->fallbackHandler
->buildOptionsForm($fallback_form, $form_state);
// Remove all fields from FieldPluginBase from the fallback form, but leave
// those in that were only added by our immediate parent,
// \Drupal\views\Plugin\views\field\Field. (E.g., the "type" option is
// especially prone to conflicts here.) The others come from the plugin base
// classes and will be identical, so it would be confusing to include them
// twice.
$parent_keys[] = '#pre_render';
$remove_from_fallback = array_diff_key($form, array_flip($parent_keys));
$fallback_form = array_diff_key($fallback_form, $remove_from_fallback);
// Fix the "#states" selectors in the fallback form, and put an additional
// "#states" directive on it to only be visible for the corresponding
// "field_rendering" setting.
if ($fallback_form) {
FormHelper::rewriteStatesSelector($fallback_form, '"options[', '"options[fallback_options][');
$form['fallback_options'] = $fallback_form;
$form['fallback_options']['#type'] = 'fieldset';
$form['fallback_options']['#title'] = $this
->t('Render settings');
$form['fallback_options']['#states']['visible'][':input[name="options[field_rendering]"]'] = array(
'checked' => FALSE,
);
}
}