protected function DynamicEntityReferenceItem::targetTypeFieldSettingsForm in Dynamic Entity Reference 8
Same name and namespace in other branches
- 8.2 src/Plugin/Field/FieldType/DynamicEntityReferenceItem.php \Drupal\dynamic_entity_reference\Plugin\Field\FieldType\DynamicEntityReferenceItem::targetTypeFieldSettingsForm()
Returns a form for single target type settings.
This is same as \Drupal\Core\Field\Plugin\Field\FieldType\EntityReferenceItem::fieldSettingsForm() but it uses dynamic_entity_reference_selection plugin manager instead of entity_reference_selection plugin manager.
Parameters
array $form: The form where the settings form is being included in.
\Drupal\Core\Form\FormStateInterface $form_state: The form state of the (entire) configuration form.
string $target_type: The target entity type id.
Return value
array The form definition for the field settings.
1 call to DynamicEntityReferenceItem::targetTypeFieldSettingsForm()
- DynamicEntityReferenceItem::fieldSettingsForm in src/
Plugin/ Field/ FieldType/ DynamicEntityReferenceItem.php - Returns a form for the field-level settings.
File
- src/
Plugin/ Field/ FieldType/ DynamicEntityReferenceItem.php, line 292
Class
- DynamicEntityReferenceItem
- Defines the 'dynamic_entity_reference' entity field type.
Namespace
Drupal\dynamic_entity_reference\Plugin\Field\FieldTypeCode
protected function targetTypeFieldSettingsForm(array $form, FormStateInterface $form_state, $target_type) {
/** @var \Drupal\field\FieldConfigInterface $field */
$field = $form_state
->getFormObject()
->getEntity();
$field_settings = $field
->getSettings();
/** @var \Drupal\dynamic_entity_reference\SelectionPluginManager $manager */
$manager = \Drupal::service('plugin.manager.dynamic_entity_reference_selection');
// Get all selection plugins for this entity type.
$selection_plugins = $manager
->getSelectionGroups($target_type);
$handlers_options = [];
foreach (array_keys($selection_plugins) as $selection_group_id) {
// We only display base plugins (e.g. 'default', 'views', ...) and not
// entity type specific plugins (e.g. 'default:node', 'default:user',
// ...).
if (array_key_exists($selection_group_id, $selection_plugins[$selection_group_id])) {
$handlers_options[$selection_group_id] = Html::escape($selection_plugins[$selection_group_id][$selection_group_id]['label']);
}
elseif (array_key_exists($selection_group_id . ':' . $target_type, $selection_plugins[$selection_group_id])) {
$selection_group_plugin = $selection_group_id . ':' . $target_type;
$handlers_options[$selection_group_plugin] = Html::escape($selection_plugins[$selection_group_id][$selection_group_plugin]['base_plugin_label']);
}
}
$form = [
'#type' => 'container',
'#process' => [
[
EntityReferenceItem::class,
'fieldSettingsAjaxProcess',
],
],
'#element_validate' => [
[
DynamicEntityReferenceItem::class,
'fieldSettingsFormValidate',
],
],
];
$form['handler'] = [
'#type' => 'details',
'#title' => t('Reference type'),
'#open' => TRUE,
'#tree' => TRUE,
'#process' => [
[
EntityReferenceItem::class,
'formProcessMergeParent',
],
],
];
$form['handler']['handler'] = [
'#type' => 'select',
'#title' => t('Reference method'),
'#options' => $handlers_options,
'#default_value' => $field_settings[$target_type]['handler'],
'#required' => TRUE,
'#ajax' => TRUE,
'#limit_validation_errors' => [],
];
$form['handler']['handler_submit'] = [
'#type' => 'submit',
'#value' => t('Change handler'),
'#limit_validation_errors' => [],
'#attributes' => [
'class' => [
'js-hide',
],
],
'#submit' => [
'entity_reference_settings_ajax_submit',
],
];
$form['handler']['handler_settings'] = [
'#type' => 'container',
'#attributes' => [
'class' => [
'entity_reference-settings',
],
],
];
$handler = $manager
->getSelectionHandler($field, NULL, $target_type);
$form['handler']['handler_settings'] += $handler
->buildConfigurationForm([], $form_state);
return $form;
}