class FormElementComponentType in Flexiform 8
Plugin for field widget component types.
Plugin annotation
@FormComponentType(
id = "form_element",
label = @Translation("Form Element"),
component_class = "Drupal\flexiform\Plugin\FormComponentType\FormElementComponent",
)
Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements DerivativeInspectionInterface, PluginInspectionInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
- class \Drupal\flexiform\FormComponent\FormComponentTypeBase implements FormComponentTypeInterface
- class \Drupal\flexiform\FormComponent\FormComponentTypeCreateableBase implements FormComponentTypeCreateableInterface
- class \Drupal\flexiform\Plugin\FormComponentType\FormElementComponentType implements ContainerFactoryPluginInterface uses ContextAwarePluginAssignmentTrait
- class \Drupal\flexiform\FormComponent\FormComponentTypeCreateableBase implements FormComponentTypeCreateableInterface
- class \Drupal\flexiform\FormComponent\FormComponentTypeBase implements FormComponentTypeInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
Expanded class hierarchy of FormElementComponentType
File
- src/
Plugin/ FormComponentType/ FormElementComponentType.php, line 25
Namespace
Drupal\flexiform\Plugin\FormComponentTypeView source
class FormElementComponentType extends FormComponentTypeCreateableBase implements ContainerFactoryPluginInterface {
use ContextAwarePluginAssignmentTrait;
/**
* The form element plugin manager.
*
* @var \Drupal\flexiform\FormElementPluginManager
*/
protected $pluginManager;
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
return new static($configuration, $plugin_id, $plugin_definition, $container
->get('plugin.manager.flexiform.form_element'));
}
/**
* Construct a new form element component type object.
*
* @param array $configuration
* A configuration array containing information about the plugin instance.
* @param string $plugin_id
* The plugin_id for the plugin instance.
* @param mixed $plugin_definition
* The plugin implementation definition.
* @param \Drupal\flexiform\FormElementPluginManager $plugin_manager
* The form element plugin manager.
*/
public function __construct(array $configuration, $plugin_id, $plugin_definition, FormElementPluginManager $plugin_manager) {
parent::__construct($configuration, $plugin_id, $plugin_definition);
$this->pluginManager = $plugin_manager;
}
/**
* {@inheritdoc}
*/
public function componentRows(EntityDisplayFormBase $form_object, array $form, FormStateInterface $form_state) {
$rows = [];
foreach ($this
->getFormDisplay()
->getComponents() as $component_name => $options) {
if (isset($options['component_type']) && $options['component_type'] == $this
->getPluginId()) {
$rows[$component_name] = $this
->buildComponentRow($form_object, $component_name, $form, $form_state);
}
}
return $rows;
}
/**
* {@inheritdoc}
*/
public function addComponentForm(array $form, FormStateInterface $form_state) {
// Build the parents for the form element selector.
$parents = $form['#parents'];
$parents[] = 'form_element';
$available_plugins = $this->pluginManager
->getDefinitionsForContexts($this
->getFormEntityManager($form, $form_state)
->getContexts());
$form['#prefix'] = '<div id="flexiform-form-element-add-wrapper">';
$form['#suffix'] = '</div>';
$plugin_options = [];
foreach ($available_plugins as $plugin_id => $plugin_definition) {
if (empty($plugin_definition['no_ui'])) {
$plugin_options[$plugin_id] = $plugin_definition['label'];
}
}
$form['form_element'] = [
'#type' => 'select',
'#required' => TRUE,
'#options' => $plugin_options,
'#title' => $this
->t('Form Element'),
'#ajax' => [
'callback' => [
$this,
'ajaxFormElementSelect',
],
'wrapper' => 'flexiform-form-element-add-wrapper',
],
];
if ($plugin_id = NestedArray::getValue($form_state
->getUserInput(), $parents)) {
$plugin = $this->pluginManager
->createInstance($plugin_id);
if ($plugin instanceof ContextAwarePluginInterface) {
$contexts = $this
->getFormEntityManager()
->getContexts();
$form['context_mapping'] = [
'#parents' => [
'options',
'settings',
'context_mapping',
],
] + $this
->addContextAssignmentElement($plugin, $contexts);
foreach (Element::children($form['context_mapping']) as $mapping_key) {
$form['context_mapping'][$mapping_key]['#empty_option'] = $this
->t('- Select -');
}
}
$form += $plugin
->settingsForm($form, $form_state);
}
return $form;
}
/**
* {@inheritdoc}
*/
public function addComponentFormSubmit(array $form, FormStateInterface $form_state) {
}
/**
* {@inheritdoc}
*/
public function ajaxFormElementSelect(array $form, FormStateInterface $form_state) {
$element = $form_state
->getTriggeringElement();
$array_parents = $element['#array_parents'];
array_pop($array_parents);
return NestedArray::getValue($form, $array_parents);
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ContextAwarePluginAssignmentTrait:: |
protected | function | Builds a form element for assigning a context to a given slot. | |
ContextAwarePluginAssignmentTrait:: |
protected | function | Wraps the context handler. | |
ContextAwarePluginAssignmentTrait:: |
abstract protected | function | Ensures the t() method is available. | |
DependencySerializationTrait:: |
protected | property | An array of entity type IDs keyed by the property name of their storages. | |
DependencySerializationTrait:: |
protected | property | An array of service IDs keyed by property name used for serialization. | |
DependencySerializationTrait:: |
public | function | 1 | |
DependencySerializationTrait:: |
public | function | 2 | |
FormComponentTypeBase:: |
protected | property | A list of components that have been constructed. | |
FormComponentTypeBase:: |
protected | property | The form display. | |
FormComponentTypeBase:: |
protected | property | The form entity manager. | |
FormComponentTypeBase:: |
protected | function | Build a component row for a component of this type. | 1 |
FormComponentTypeBase:: |
protected | function | Get applicable renderer plugin options. | 1 |
FormComponentTypeBase:: |
public | function |
Get a component object. Overrides FormComponentTypeInterface:: |
2 |
FormComponentTypeBase:: |
protected | function | Get the default renderer plugin. | 1 |
FormComponentTypeBase:: |
public | function |
Get the form display. Overrides FormComponentTypeInterface:: |
|
FormComponentTypeBase:: |
public | function |
Get the form entity manager. Overrides FormComponentTypeInterface:: |
|
FormComponentTypeBase:: |
public | function |
Set the form display. Overrides FormComponentTypeInterface:: |
|
FormComponentTypeBase:: |
public | function | ||
FormComponentTypeBase:: |
public | function | 1 | |
FormComponentTypeCreateableBase:: |
public | function |
Validate the add component form. Overrides FormComponentTypeCreateableInterface:: |
|
FormElementComponentType:: |
protected | property | The form element plugin manager. | |
FormElementComponentType:: |
public | function |
Get a form for adding a component of this type. Overrides FormComponentTypeCreateableBase:: |
|
FormElementComponentType:: |
public | function |
Submit the add component options form. Overrides FormComponentTypeCreateableBase:: |
|
FormElementComponentType:: |
public | function | ||
FormElementComponentType:: |
public | function |
Overrides FormComponentTypeBase:: |
|
FormElementComponentType:: |
public static | function |
Creates an instance of the plugin. Overrides ContainerFactoryPluginInterface:: |
|
FormElementComponentType:: |
public | function |
Construct a new form element component type object. Overrides PluginBase:: |
|
MessengerTrait:: |
protected | property | The messenger. | 29 |
MessengerTrait:: |
public | function | Gets the messenger. | 29 |
MessengerTrait:: |
public | function | Sets the messenger. | |
PluginBase:: |
protected | property | Configuration information passed into the plugin. | 1 |
PluginBase:: |
protected | property | The plugin implementation definition. | 1 |
PluginBase:: |
protected | property | The plugin_id. | |
PluginBase:: |
constant | A string which is used to separate base plugin IDs from the derivative ID. | ||
PluginBase:: |
public | function |
Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the definition of the plugin implementation. Overrides PluginInspectionInterface:: |
3 |
PluginBase:: |
public | function |
Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface:: |
|
PluginBase:: |
public | function | Determines if the plugin is configurable. | |
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |