class ViewfieldItem in Viewfield 8.3
Plugin implementation of the 'viewfield' field type.
Plugin annotation
@FieldType(
id = "viewfield",
label = @Translation("Viewfield"),
description = @Translation("'Defines a entity reference field type to display a view.'"),
category = @Translation("Reference"),
default_widget = "viewfield_select",
default_formatter = "viewfield_default",
list_class = "\Drupal\Core\Field\EntityReferenceFieldItemList",
)
Hierarchy
- class \Drupal\Core\TypedData\TypedData implements PluginInspectionInterface, TypedDataInterface uses DependencySerializationTrait, StringTranslationTrait, TypedDataTrait
- class \Drupal\Core\TypedData\Plugin\DataType\Map implements \Drupal\Core\TypedData\Plugin\DataType\IteratorAggregate, ComplexDataInterface
- class \Drupal\Core\Field\FieldItemBase implements FieldItemInterface
- class \Drupal\Core\Field\Plugin\Field\FieldType\EntityReferenceItem implements PreconfiguredFieldUiOptionsInterface, OptionsProviderInterface
- class \Drupal\viewfield\Plugin\Field\FieldType\ViewfieldItem
- class \Drupal\Core\Field\Plugin\Field\FieldType\EntityReferenceItem implements PreconfiguredFieldUiOptionsInterface, OptionsProviderInterface
- class \Drupal\Core\Field\FieldItemBase implements FieldItemInterface
- class \Drupal\Core\TypedData\Plugin\DataType\Map implements \Drupal\Core\TypedData\Plugin\DataType\IteratorAggregate, ComplexDataInterface
Expanded class hierarchy of ViewfieldItem
File
- src/
Plugin/ Field/ FieldType/ ViewfieldItem.php, line 27
Namespace
Drupal\viewfield\Plugin\Field\FieldTypeView source
class ViewfieldItem extends EntityReferenceItem {
/**
* {@inheritdoc}
*/
public static function defaultStorageSettings() {
return [
'target_type' => 'view',
];
}
/**
* {@inheritdoc}
*/
public static function defaultFieldSettings() {
return [
'force_default' => 0,
'allowed_views' => [],
'allowed_display_types' => [
'block' => 'block',
],
] + parent::defaultFieldSettings();
}
/**
* {@inheritdoc}
*/
public static function schema(FieldStorageDefinitionInterface $field_definition) {
$schema = parent::schema($field_definition);
$schema['columns']['display_id'] = [
'description' => 'The ID of the view display.',
'type' => 'varchar_ascii',
'length' => 255,
];
$schema['columns']['arguments'] = [
'description' => 'Arguments to be passed to the display.',
'type' => 'varchar',
'length' => 255,
];
$schema['columns']['items_to_display'] = [
'description' => 'Items to display.',
'type' => 'varchar',
'length' => 255,
];
return $schema;
}
/**
* {@inheritdoc}
*/
public static function propertyDefinitions(FieldStorageDefinitionInterface $field_definition) {
$properties = parent::propertyDefinitions($field_definition);
$properties['entity']
->setDescription(t('The referenced view'));
$properties['display_id'] = DataDefinition::create('string')
->setLabel(t('Display ID'))
->setDescription(t('The view display ID'));
$properties['arguments'] = DataDefinition::create('string')
->setLabel(t('Arguments'))
->setDescription(t('An optional comma-delimited list of arguments for the display'));
$properties['items_to_display'] = DataDefinition::create('string')
->setLabel(t('Items to display'))
->setDescription(t('Override the number of displayed items.'));
return $properties;
}
/**
* {@inheritdoc}
*/
public function storageSettingsForm(array &$form, FormStateInterface $form_state, $has_data) {
$element = parent::storageSettingsForm($form, $form_state, $has_data);
// Hide entity type selection.
$element['target_type']['#access'] = FALSE;
return $element;
}
/**
* {@inheritdoc}
*/
public function fieldSettingsForm(array $form, FormStateInterface $form_state) {
$form = [];
$form['force_default'] = [
'#type' => 'checkbox',
'#title' => $this
->t('Always use default value'),
'#default_value' => $this
->getSetting('force_default'),
'#description' => $this
->t('Hides this field in entity edit forms and enforces the configured default value for all entities in the bundle, making it unnecessary to assign values individually to each one.<br>If this is checked, you must provide a default value.'),
];
$form['allowed_views'] = [
'#type' => 'checkboxes',
'#options' => $this
->getViewOptions(FALSE),
'#title' => $this
->t('Allowed views'),
'#default_value' => $this
->getSetting('allowed_views'),
'#description' => $this
->t('Views available for content authors. Leave empty to allow all.'),
];
$form['allowed_display_types'] = [
'#type' => 'checkboxes',
'#options' => $this
->getDisplayTypeOptions(),
'#title' => $this
->t('Allowed display types'),
'#default_value' => $this
->getSetting('allowed_display_types'),
'#description' => $this
->t('Display types available for content authors. Leave empty to allow all.'),
];
$form['#element_validate'][] = [
get_called_class(),
'fieldSettingsFormValidate',
];
return $form;
}
/**
* Form API callback.
*
* Requires that field defaults be supplied when the 'force_default' option
* is checked.
*
* This function is assigned as an #element_validate callback in
* fieldSettingsForm().
*/
public static function fieldSettingsFormValidate(array $form, FormStateInterface $form_state) {
$settings = $form_state
->getValue('settings');
if ($settings['force_default']) {
$default_value = $form_state
->getValue('default_value_input');
$field_name = $form_state
->getFormObject()
->getEntity()
->getName();
if (empty($default_value[$field_name][0]['target_id']) || $default_value[$field_name][0]['target_id'] == '_none') {
$form_state
->setErrorByName('default_value_input', t('%title requires a default value.', [
'%title' => $form['force_default']['#title'],
]));
}
}
}
/**
* {@inheritdoc}
*/
public static function getPreconfiguredOptions() {
return [];
}
/**
* Get an options array of views.
*
* @param bool $filter
* (optional) Flag to filter the output using the 'allowed_views' setting.
*
* @return array
* The array of options.
*/
public function getViewOptions($filter = TRUE) {
$views_options = [];
$allowed_views = $filter ? array_filter($this
->getSetting('allowed_views')) : [];
foreach (Views::getEnabledViews() as $key => $view) {
if (empty($allowed_views) || isset($allowed_views[$key])) {
$views_options[$key] = FieldFilteredMarkup::create($view
->get('label'));
}
}
natcasesort($views_options);
return $views_options;
}
/**
* Get display ID options for a view.
*
* @param string $entity_id
* The entity_id of the view.
* @param bool $filter
* (optional) Flag to filter the output using the 'allowed_display_types'
* setting.
*
* @return array
* The array of options.
*/
public function getDisplayOptions($entity_id, $filter = TRUE) {
$display_options = [];
$views = Views::getEnabledViews();
if (isset($views[$entity_id])) {
$allowed_display_types = $filter ? array_filter($this
->getSetting('allowed_display_types')) : [];
foreach ($views[$entity_id]
->get('display') as $key => $display) {
if (empty($allowed_display_types) || isset($allowed_display_types[$display['display_plugin']])) {
$display_options[$key] = FieldFilteredMarkup::create($display['display_title']);
}
}
natcasesort($display_options);
}
return $display_options;
}
/**
* Get an options array of all Views display types.
*
* @return array
* The array of options.
*/
public function getDisplayTypeOptions() {
$display_type_options = [];
foreach (Views::pluginList() as $key => $type) {
if ($type['type'] == 'display') {
$display_type_options[str_replace('display:', '', $key)] = FieldFilteredMarkup::create($type['title']);
}
}
natcasesort($display_type_options);
return $display_type_options;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
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 | |
EntityReferenceItem:: |
public static | function |
Calculates dependencies for field items. Overrides FieldItemBase:: |
|
EntityReferenceItem:: |
public static | function |
Calculates dependencies for field items on the storage level. Overrides FieldItemBase:: |
|
EntityReferenceItem:: |
public static | function | Render API callback: Processes the field settings form and allows access to the form state. | |
EntityReferenceItem:: |
public static | function | Adds entity_reference specific properties to AJAX form elements from the field settings form. | |
EntityReferenceItem:: |
public static | function | Render API callback: Moves entity_reference specific Form API elements (i.e. 'handler_settings') up a level for easier processing by the validation and submission handlers. | |
EntityReferenceItem:: |
public static | function |
Generates placeholder field values. Overrides FieldItemBase:: |
1 |
EntityReferenceItem:: |
public | function |
Gets a list of validation constraints. Overrides TypedData:: |
|
EntityReferenceItem:: |
public | function |
Returns an array of possible values with labels for display. Overrides OptionsProviderInterface:: |
|
EntityReferenceItem:: |
public | function |
Returns an array of possible values. Overrides OptionsProviderInterface:: |
|
EntityReferenceItem:: |
protected static | function | Gets a bundle for a given entity type and selection options. | |
EntityReferenceItem:: |
public | function |
Returns an array of settable values with labels for display. Overrides OptionsProviderInterface:: |
|
EntityReferenceItem:: |
public | function |
Returns an array of settable values. Overrides OptionsProviderInterface:: |
|
EntityReferenceItem:: |
public | function |
Gets the data value. Overrides Map:: |
|
EntityReferenceItem:: |
public | function | Determines whether the item holds an unsaved entity. | |
EntityReferenceItem:: |
public | function |
Determines whether the data structure is empty. Overrides Map:: |
|
EntityReferenceItem:: |
public static | function |
Returns the name of the main property, if any. Overrides FieldItemBase:: |
|
EntityReferenceItem:: |
public | function |
React to changes to a child property or item. Overrides Map:: |
|
EntityReferenceItem:: |
public static | function |
Informs the plugin that a dependency of the field will be deleted. Overrides FieldItemBase:: |
|
EntityReferenceItem:: |
public | function |
Defines custom presave behavior for field values. Overrides FieldItemBase:: |
1 |
EntityReferenceItem:: |
public static | function | Ajax callback for the handler settings form. | |
EntityReferenceItem:: |
public static | function | Submit handler for the non-JS case. | |
EntityReferenceItem:: |
public | function |
Sets the data value. Overrides FieldItemBase:: |
|
FieldItemBase:: |
public | function |
Defines custom delete behavior for field values. Overrides FieldItemInterface:: |
2 |
FieldItemBase:: |
public | function |
Defines custom revision delete behavior for field values. Overrides FieldItemInterface:: |
|
FieldItemBase:: |
public static | function |
Returns a settings array in the field type's canonical representation. Overrides FieldItemInterface:: |
1 |
FieldItemBase:: |
public static | function |
Returns a settings array that can be stored as a configuration value. Overrides FieldItemInterface:: |
1 |
FieldItemBase:: |
public | function |
Gets the entity that field belongs to. Overrides FieldItemInterface:: |
|
FieldItemBase:: |
public | function |
Gets the field definition. Overrides FieldItemInterface:: |
|
FieldItemBase:: |
public | function |
Gets the langcode of the field values held in the object. Overrides FieldItemInterface:: |
|
FieldItemBase:: |
protected | function | Returns the value of a field setting. | |
FieldItemBase:: |
protected | function | Returns the array of field settings. | |
FieldItemBase:: |
public | function |
Defines custom post-save behavior for field values. Overrides FieldItemInterface:: |
2 |
FieldItemBase:: |
public static | function |
Returns a settings array in the field type's canonical representation. Overrides FieldItemInterface:: |
2 |
FieldItemBase:: |
public static | function |
Returns a settings array that can be stored as a configuration value. Overrides FieldItemInterface:: |
2 |
FieldItemBase:: |
public | function |
Returns a renderable array for a single field item. Overrides FieldItemInterface:: |
|
FieldItemBase:: |
protected | function |
Different to the parent Map class, we avoid creating property objects as
far as possible in order to optimize performance. Thus we just update
$this->values if no property object has been created yet. Overrides Map:: |
|
FieldItemBase:: |
public | function |
Constructs a TypedData object given its definition and context. Overrides TypedData:: |
1 |
FieldItemBase:: |
public | function |
Magic method: Gets a property value. Overrides FieldItemInterface:: |
2 |
FieldItemBase:: |
public | function |
Magic method: Determines whether a property is set. Overrides FieldItemInterface:: |
|
FieldItemBase:: |
public | function |
Magic method: Sets a property value. Overrides FieldItemInterface:: |
1 |
FieldItemBase:: |
public | function |
Magic method: Unsets a property. Overrides FieldItemInterface:: |
|
Map:: |
protected | property |
The data definition. Overrides TypedData:: |
|
Map:: |
protected | property | The array of properties. | |
Map:: |
protected | property | An array of values for the contained properties. | |
Map:: |
public | function |
Applies the default value. Overrides TypedData:: |
4 |
Map:: |
public | function |
Gets a property object. Overrides ComplexDataInterface:: |
|
Map:: |
public | function | ||
Map:: |
public | function |
Gets an array of property objects. Overrides ComplexDataInterface:: |
|
Map:: |
public | function |
Returns a string representation of the data. Overrides TypedData:: |
|
Map:: |
public | function |
Sets a property value. Overrides ComplexDataInterface:: |
|
Map:: |
public | function |
Returns an array of all property values. Overrides ComplexDataInterface:: |
1 |
Map:: |
public | function | Magic method: Implements a deep clone. | |
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. | |
TypedData:: |
protected | property | The property name. | |
TypedData:: |
protected | property | The parent typed data object. | |
TypedData:: |
public static | function |
Constructs a TypedData object given its definition and context. Overrides TypedDataInterface:: |
|
TypedData:: |
public | function |
Gets the data definition. Overrides TypedDataInterface:: |
|
TypedData:: |
public | function |
Returns the name of a property or item. Overrides TypedDataInterface:: |
|
TypedData:: |
public | function |
Returns the parent data structure; i.e. either complex data or a list. Overrides TypedDataInterface:: |
|
TypedData:: |
public | function |
Gets the definition of the plugin implementation. Overrides PluginInspectionInterface:: |
|
TypedData:: |
public | function |
Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface:: |
|
TypedData:: |
public | function |
Returns the property path of the data. Overrides TypedDataInterface:: |
|
TypedData:: |
public | function |
Returns the root of the typed data tree. Overrides TypedDataInterface:: |
|
TypedData:: |
public | function |
Sets the context of a property or item via a context aware parent. Overrides TypedDataInterface:: |
|
TypedData:: |
public | function |
Validates the currently set data value. Overrides TypedDataInterface:: |
|
TypedDataTrait:: |
protected | property | The typed data manager used for creating the data types. | |
TypedDataTrait:: |
public | function | Gets the typed data manager. | 2 |
TypedDataTrait:: |
public | function | Sets the typed data manager. | 2 |
ViewfieldItem:: |
public static | function |
Defines the field-level settings for this plugin. Overrides EntityReferenceItem:: |
|
ViewfieldItem:: |
public static | function |
Defines the storage-level settings for this plugin. Overrides EntityReferenceItem:: |
|
ViewfieldItem:: |
public | function |
Returns a form for the field-level settings. Overrides EntityReferenceItem:: |
|
ViewfieldItem:: |
public static | function |
Form API callback. Overrides EntityReferenceItem:: |
|
ViewfieldItem:: |
public | function | Get display ID options for a view. | |
ViewfieldItem:: |
public | function | Get an options array of all Views display types. | |
ViewfieldItem:: |
public static | function |
Returns preconfigured field options for a field type. Overrides EntityReferenceItem:: |
|
ViewfieldItem:: |
public | function | Get an options array of views. | |
ViewfieldItem:: |
public static | function |
Defines field item properties. Overrides EntityReferenceItem:: |
|
ViewfieldItem:: |
public static | function |
Returns the schema for the field. Overrides EntityReferenceItem:: |
|
ViewfieldItem:: |
public | function |
Returns a form for the storage-level settings. Overrides EntityReferenceItem:: |