class CshsWidget in Client-side Hierarchical Select 8
Same name and namespace in other branches
- 8.3 src/Plugin/Field/FieldWidget/CshsWidget.php \Drupal\cshs\Plugin\Field\FieldWidget\CshsWidget
- 8.2 src/Plugin/Field/FieldWidget/CshsWidget.php \Drupal\cshs\Plugin\Field\FieldWidget\CshsWidget
Provides "cshs" field widget.
Plugin annotation
@FieldWidget(
id = "cshs",
label = @Translation("Client-side hierarchical select"),
field_types = {
"entity_reference",
},
)
Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements DerivativeInspectionInterface, PluginInspectionInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
- class \Drupal\Core\Field\PluginSettingsBase implements DependentPluginInterface, PluginSettingsInterface
- class \Drupal\Core\Field\WidgetBase implements WidgetInterface, ContainerFactoryPluginInterface uses AllowedTagsXssTrait
- class \Drupal\cshs\Plugin\Field\FieldWidget\CshsWidget uses CshsOptionsFromHelper, IsApplicable
- class \Drupal\Core\Field\WidgetBase implements WidgetInterface, ContainerFactoryPluginInterface uses AllowedTagsXssTrait
- class \Drupal\Core\Field\PluginSettingsBase implements DependentPluginInterface, PluginSettingsInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
Expanded class hierarchy of CshsWidget
File
- src/
Plugin/ Field/ FieldWidget/ CshsWidget.php, line 24
Namespace
Drupal\cshs\Plugin\Field\FieldWidgetView source
class CshsWidget extends WidgetBase {
use IsApplicable {
isApplicable as helperIsApplicable;
}
use CshsOptionsFromHelper {
defaultSettings as helperDefaultSettings;
settingsSummary as helperSettingsSummary;
settingsForm as helperSettingsForm;
formElement as helperFormElement;
}
/**
* {@inheritdoc}
*/
public static function isApplicable(FieldDefinitionInterface $field_definition) : bool {
if (static::helperIsApplicable($field_definition)) {
/* @see \Drupal\Core\Entity\Plugin\EntityReferenceSelection\DefaultSelection */
if (\count($field_definition
->getSettings()['handler_settings']['target_bundles'] ?? []) === 1) {
return TRUE;
}
\Drupal::messenger()
->addWarning(\t('The client-side hierarchical select widget cannot be used for the %label field. Either change the widget type or configure the %field to use the default entity reference selection handler with only a single vocabulary.', [
'%label' => $field_definition
->getLabel(),
'%field' => \str_replace('.', ' -> ', $field_definition
->id()),
]));
}
return FALSE;
}
/**
* {@inheritdoc}
*/
public static function defaultSettings() : array {
/* @noinspection AdditionOperationOnArraysInspection */
return static::helperDefaultSettings() + parent::defaultSettings();
}
/**
* {@inheritdoc}
*/
public function getSettings() : array {
// Overridden to provide a return type.
return parent::getSettings();
}
/**
* {@inheritdoc}
*/
public function settingsSummary() : array {
return $this
->helperSettingsSummary();
}
/**
* {@inheritdoc}
*/
public function settingsForm(array $form, FormStateInterface $form_state) : array {
return $this
->helperSettingsForm($form, $form_state);
}
/**
* {@inheritdoc}
*/
public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state) : array {
$element['target_id'] = \array_merge($element, $this
->helperFormElement(), [
'#label' => $this->fieldDefinition
->getLabel(),
]);
if ($items
->isEmpty()) {
return $element;
}
if ($this
->handlesMultipleValues()) {
$element['target_id']['#default_value'] = \array_map(static function (array $item) : int {
return $item['target_id'];
}, $items
->getValue());
}
else {
/* @noinspection NullPointerExceptionInspection */
$element['target_id']['#default_value'] = $items
->get($delta)
->getValue();
}
return $element;
}
/**
* {@inheritdoc}
*/
public function massageFormValues(array $values, array $form, FormStateInterface $form_state) : array {
if (!empty($values['target_id']) && \is_array($values['target_id'])) {
$list = [];
foreach ($values['target_id'] as $id) {
$list[] = [
'target_id' => $id,
];
}
return $list;
}
return parent::massageFormValues($values, $form, $form_state);
}
/**
* {@inheritdoc}
*/
public function getVocabulary() : VocabularyInterface {
return $this
->getVocabularyStorage()
->load(\reset($this->fieldDefinition
->getSettings()['handler_settings']['target_bundles']));
}
/**
* {@inheritdoc}
*/
protected function handlesMultipleValues() : bool {
return (bool) $this
->getSetting('save_lineage');
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
AllowedTagsXssTrait:: |
public | function | Returns a list of tags allowed by AllowedTagsXssTrait::fieldFilterXss(). | |
AllowedTagsXssTrait:: |
public | function | Returns a human-readable list of allowed tags for display in help texts. | |
AllowedTagsXssTrait:: |
public | function | Filters an HTML string to prevent XSS vulnerabilities. | |
CshsOptionsFromHelper:: |
public static | function | Defines the default settings for this plugin. Aliased as: helperDefaultSettings | |
CshsOptionsFromHelper:: |
public | function | Returns the form for a single widget. Aliased as: helperFormElement | |
CshsOptionsFromHelper:: |
private | function | Collects the options. | |
CshsOptionsFromHelper:: |
abstract public | function | Returns the value of a setting, or its default value if absent. | 1 |
CshsOptionsFromHelper:: |
private | function | Returns translated labels with escaped markup. | |
CshsOptionsFromHelper:: |
public | function | Returns a form to configure settings. Aliased as: helperSettingsForm | |
CshsOptionsFromHelper:: |
public | function | Returns a short summary for the settings. Aliased as: helperSettingsSummary | |
CshsOptionsFromHelper:: |
public | function | Validates the settings form. | |
CshsWidget:: |
public static | function |
Defines the default settings for this plugin. Overrides PluginSettingsBase:: |
|
CshsWidget:: |
public | function |
Returns the form for a single field widget. Overrides WidgetInterface:: |
|
CshsWidget:: |
public | function |
Returns the array of settings, including defaults for missing settings. Overrides CshsOptionsFromHelper:: |
|
CshsWidget:: |
public | function |
Returns the taxonomy vocabulary to work with. Overrides CshsOptionsFromHelper:: |
|
CshsWidget:: |
protected | function |
Returns whether the widget handles multiple values. Overrides WidgetBase:: |
|
CshsWidget:: |
public static | function |
Returns if the widget can be used for the provided field. Overrides WidgetBase:: |
|
CshsWidget:: |
public | function |
Massages the form values into the format expected for field values. Overrides WidgetBase:: |
|
CshsWidget:: |
public | function |
Returns a form to configure settings for the widget. Overrides WidgetBase:: |
|
CshsWidget:: |
public | function |
Returns a short summary for the current widget settings. Overrides WidgetBase:: |
|
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 | |
IsApplicable:: |
public static | function | Aliased as: helperIsApplicable | |
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. | |
PluginSettingsBase:: |
protected | property | Whether default settings have been merged into the current $settings. | |
PluginSettingsBase:: |
protected | property | The plugin settings injected by third party modules. | |
PluginSettingsBase:: |
public | function |
Calculates dependencies for the configured plugin. Overrides DependentPluginInterface:: |
6 |
PluginSettingsBase:: |
public | function |
Gets the list of third parties that store information. Overrides ThirdPartySettingsInterface:: |
|
PluginSettingsBase:: |
public | function |
Gets the value of a third-party setting. Overrides ThirdPartySettingsInterface:: |
|
PluginSettingsBase:: |
public | function |
Gets all third-party settings of a given module. Overrides ThirdPartySettingsInterface:: |
|
PluginSettingsBase:: |
protected | function | Merges default settings values into $settings. | |
PluginSettingsBase:: |
public | function |
Informs the plugin that some configuration it depends on will be deleted. Overrides PluginSettingsInterface:: |
3 |
PluginSettingsBase:: |
public | function |
Sets the value of a setting for the plugin. Overrides PluginSettingsInterface:: |
|
PluginSettingsBase:: |
public | function |
Sets the settings for the plugin. Overrides PluginSettingsInterface:: |
|
PluginSettingsBase:: |
public | function |
Sets the value of a third-party setting. Overrides ThirdPartySettingsInterface:: |
|
PluginSettingsBase:: |
public | function |
Unsets a third-party setting. Overrides ThirdPartySettingsInterface:: |
|
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 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. | |
TaxonomyStorages:: |
protected | property | An instance of the "entity.repository" service. | |
TaxonomyStorages:: |
protected | property | An instance of the "entity_type.manager" service. | |
TaxonomyStorages:: |
private | property | The state of whether content translation should be used. | |
TaxonomyStorages:: |
private | function | Returns the entity storage. | |
TaxonomyStorages:: |
protected | function | Returns storage of the "taxonomy_term" entities. | 1 |
TaxonomyStorages:: |
protected | function | Returns the entity translation to be used in the given context. | |
TaxonomyStorages:: |
protected | function | Returns storage of the "taxonomy_vocabulary" entities. | 1 |
TaxonomyStorages:: |
protected | function | Returns the state of whether content translation needed. | |
WidgetBase:: |
protected | property | The field definition. | |
WidgetBase:: |
protected | property |
The widget settings. Overrides PluginSettingsBase:: |
|
WidgetBase:: |
public static | function | Ajax callback for the "Add another item" button. | |
WidgetBase:: |
public static | function | Submission handler for the "Add another item" button. | |
WidgetBase:: |
public static | function | After-build handler for field elements in a form. | |
WidgetBase:: |
public static | function |
Creates an instance of the plugin. Overrides ContainerFactoryPluginInterface:: |
5 |
WidgetBase:: |
public | function |
Assigns a field-level validation error to the right widget sub-element. Overrides WidgetInterface:: |
8 |
WidgetBase:: |
public | function |
Extracts field values from submitted form values. Overrides WidgetBaseInterface:: |
2 |
WidgetBase:: |
public | function |
Reports field-level validation errors against actual form elements. Overrides WidgetBaseInterface:: |
2 |
WidgetBase:: |
public | function |
Creates a form element for a field. Overrides WidgetBaseInterface:: |
3 |
WidgetBase:: |
protected | function | Special handling to create form elements for multiple values. | 1 |
WidgetBase:: |
protected | function | Generates the form element for a single copy of the widget. | |
WidgetBase:: |
protected | function | Returns the value of a field setting. | |
WidgetBase:: |
protected | function | Returns the array of field settings. | |
WidgetBase:: |
protected | function | Returns the filtered field description. | |
WidgetBase:: |
public static | function |
Retrieves processing information about the widget from $form_state. Overrides WidgetBaseInterface:: |
|
WidgetBase:: |
protected static | function | Returns the location of processing information within $form_state. | |
WidgetBase:: |
protected | function | Returns whether the widget used for default value form. | |
WidgetBase:: |
public static | function |
Stores processing information about the widget in $form_state. Overrides WidgetBaseInterface:: |
|
WidgetBase:: |
public | function |
Constructs a WidgetBase object. Overrides PluginBase:: |
5 |