class PhpSelection extends DefaultSelection (View source)

Defines an alternative to the default Entity Reference Selection plugin.

This selection plugin uses PHP for more advanced cases when the entity query cannot filter properly, for example when the target entity type has no 'label' key provided in the entity type plugin definition.

Traits

Wrapper methods for \Drupal\Core\StringTranslation\TranslationInterface.

Provides dependency injection friendly methods for serialization.

Provides a trait for the messenger service.

Constants

DERIVATIVE_SEPARATOR

A string which is used to separate base plugin IDs from the derivative ID.

Properties

protected string $pluginId

The plugin_id.

from  PluginBase
protected array $pluginDefinition

The plugin implementation definition.

from  PluginBase
protected array $configuration

Configuration information passed into the plugin.

from  PluginBase
protected TranslationInterface $stringTranslation

The string translation service.

from  StringTranslationTrait
protected array $_serviceIds

An array of service IDs keyed by property name used for serialization.

from  DependencySerializationTrait
protected array $_entityStorages

An array of entity type IDs keyed by the property name of their storages.

from  DependencySerializationTrait
protected MessengerInterface $messenger

The messenger.

from  MessengerTrait
protected EntityTypeManagerInterface $entityTypeManager

The entity type manager service.

from  DefaultSelection
protected EntityFieldManagerInterface $entityFieldManager

The entity field manager service.

from  DefaultSelection
EntityTypeBundleInfoInterface $entityTypeBundleInfo

Entity type bundle info service.

from  DefaultSelection
protected EntityRepositoryInterface $entityRepository

The entity repository.

from  DefaultSelection
protected ModuleHandlerInterface $moduleHandler

The module handler service.

from  DefaultSelection
protected AccountInterface $currentUser

The current user.

from  DefaultSelection

Methods

__construct(array $configuration, string $plugin_id, mixed $plugin_definition, EntityTypeManagerInterface $entity_type_manager, ModuleHandlerInterface $module_handler, AccountInterface $current_user, EntityFieldManagerInterface $entity_field_manager, EntityTypeBundleInfoInterface $entity_type_bundle_info = NULL, EntityRepositoryInterface $entity_repository)

Constructs a new DefaultSelection object.

string
getPluginId()

Gets the plugin_id of the plugin instance.

string
getBaseId()

Gets the base_plugin_id of the plugin instance.

string|null
getDerivativeId()

Gets the derivative_id of the plugin instance.

array
getPluginDefinition()

Gets the definition of the plugin implementation.

bool
isConfigurable()

Determines if the plugin is configurable.

t(string $string, array $args = [], array $options = [])

Translates a string to the current language or to a given language.

formatPlural($count, $singular, $plural, array $args = [], array $options = [])

Formats a string containing a count of items.

getNumberOfPlurals($langcode = NULL)

Returns the number of plurals supported by a given language.

getStringTranslation()

Gets the string translation service.

$this
setStringTranslation(TranslationInterface $translation)

Sets the string translation service to use.

__sleep()

{@inheritdoc}

__wakeup()

{@inheritdoc}

setMessenger(MessengerInterface $messenger)

Sets the messenger.

messenger()

Gets the messenger.

array
defaultConfiguration()

Gets default configuration for this plugin.

array
getConfiguration()

Gets this plugin's configuration.

setConfiguration(array $configuration)

Sets the configuration for this plugin instance.

array
calculateDependencies()

Calculates dependencies for the configured plugin.

array
buildConfigurationForm(array $form, FormStateInterface $form_state)

Form constructor.

validateConfigurationForm(array $form, FormStateInterface $form_state)

Form validation handler.

submitConfigurationForm(array $form, FormStateInterface $form_state)

Form submission handler.

entityQueryAlter(SelectInterface $query)

Allows the selection to alter the SelectQuery generated by EntityFieldQuery.

create(ContainerInterface $container, array $configuration, string $plugin_id, mixed $plugin_definition)

Creates an instance of the plugin.

static 
elementValidateFilter($element, FormStateInterface $form_state)

Form element validation handler; Filters the #value property of an element.

array
getReferenceableEntities(string|null $match = NULL, string $match_operator = 'CONTAINS', int $limit = 0)

Gets the list of referenceable entities.

int
countReferenceableEntities(string $match = NULL, string $match_operator = 'CONTAINS')

Counts entities that are referenceable.

array
validateReferenceableEntities(array $ids)

Validates which existing entities can be referenced.

createNewEntity(string $entity_type_id, string $bundle, string $label, int $uid)

Creates a new entity object that can be used as a valid reference.

validateReferenceableNewEntities(array $entities)

Validates which newly created entities can be referenced.

buildEntityQuery(string|null $match = NULL, string $match_operator = 'CONTAINS')

Builds an EntityQuery to get referenceable entities.

reAlterQuery(AlterableInterface $query, $tag, $base_table)

Helper method: Passes a query to the alteration system again.

bool
matchLabel(mixed $match, string $match_operator, string $label)

Matches an entity label to an input string.

Details

__construct(array $configuration, string $plugin_id, mixed $plugin_definition, EntityTypeManagerInterface $entity_type_manager, ModuleHandlerInterface $module_handler, AccountInterface $current_user, EntityFieldManagerInterface $entity_field_manager, EntityTypeBundleInfoInterface $entity_type_bundle_info = NULL, EntityRepositoryInterface $entity_repository)

Constructs a new DefaultSelection object.

Parameters

array $configuration

A configuration array containing information about the plugin instance.

string $plugin_id

The plugin_id for the plugin instance.

mixed $plugin_definition

The plugin implementation definition.

EntityTypeManagerInterface $entity_type_manager

The entity type manager service.

ModuleHandlerInterface $module_handler

The module handler service.

AccountInterface $current_user

The current user.

EntityFieldManagerInterface $entity_field_manager

The entity field manager.

EntityTypeBundleInfoInterface $entity_type_bundle_info

The entity type bundle info service.

EntityRepositoryInterface $entity_repository

The entity repository.

string getPluginId()

Gets the plugin_id of the plugin instance.

Return Value

string

The plugin_id of the plugin instance.

string getBaseId()

Gets the base_plugin_id of the plugin instance.

Return Value

string

The base_plugin_id of the plugin instance.

string|null getDerivativeId()

Gets the derivative_id of the plugin instance.

Return Value

string|null

The derivative_id of the plugin instance NULL otherwise.

array getPluginDefinition()

Gets the definition of the plugin implementation.

Return Value

array

The plugin definition, as returned by the discovery object used by the plugin manager.

bool isConfigurable()

Determines if the plugin is configurable.

Return Value

bool

A boolean indicating whether the plugin is configurable.

protected TranslatableMarkup t(string $string, array $args = [], array $options = [])

Translates a string to the current language or to a given language.

See \Drupal\Core\StringTranslation\TranslatableMarkup::__construct() for important security information and usage guidelines.

In order for strings to be localized, make them available in one of the ways supported by the

Parameters

string $string

A string containing the English text to translate.

array $args

(optional) An associative array of replacements to make after translation. Based on the first character of the key, the value is escaped and/or themed. See \Drupal\Component\Render\FormattableMarkup::placeholderFormat() for details.

array $options

(optional) An associative array of additional options, with the following elements:

  • 'langcode' (defaults to the current language): A language code, to translate to a language other than what is used to display the page.
  • 'context' (defaults to the empty context): The context the source string belongs to. See the @link i18n Internationalization topic @endlink for more information about string contexts.

Return Value

TranslatableMarkup

An object that, when cast to a string, returns the translated string.

See also

FormattableMarkup::placeholderFormat
TranslatableMarkup::__construct

protected formatPlural($count, $singular, $plural, array $args = [], array $options = [])

Formats a string containing a count of items.

Parameters

$count
$singular
$plural
array $args
array $options

See also

TranslationInterface::formatPlural

protected getNumberOfPlurals($langcode = NULL)

Returns the number of plurals supported by a given language.

Parameters

$langcode

See also

PluralFormulaInterface::getNumberOfPlurals

protected TranslationInterface getStringTranslation()

Gets the string translation service.

Return Value

TranslationInterface

The string translation service.

$this setStringTranslation(TranslationInterface $translation)

Sets the string translation service to use.

Parameters

TranslationInterface $translation

The string translation service.

Return Value

$this

__sleep()

{@inheritdoc}

__wakeup()

{@inheritdoc}

setMessenger(MessengerInterface $messenger)

Sets the messenger.

Parameters

MessengerInterface $messenger

The messenger.

MessengerInterface messenger()

Gets the messenger.

Return Value

MessengerInterface

The messenger.

array defaultConfiguration()

Gets default configuration for this plugin.

Return Value

array

An associative array with the default configuration.

array getConfiguration()

Gets this plugin's configuration.

Return Value

array

An array of this plugin's configuration.

setConfiguration(array $configuration)

Sets the configuration for this plugin instance.

Parameters

array $configuration

An associative array containing the plugin's configuration.

array calculateDependencies()

Calculates dependencies for the configured plugin.

Dependencies are saved in the plugin's configuration entity and are used to determine configuration synchronization order. For example, if the plugin integrates with specific user roles, this method should return an array of dependencies listing the specified roles.

Return Value

array

An array of dependencies grouped by type (config, content, module, theme). For example: @code array( 'config' => array('user.role.anonymous', 'user.role.authenticated'), 'content' => array('node:article:f0a189e6-55fb-47fb-8005-5bef81c44d6d'), 'module' => array('node', 'user'), 'theme' => array('seven'), ); @endcode

array buildConfigurationForm(array $form, FormStateInterface $form_state)

Form constructor.

Plugin forms are embedded in other forms. In order to know where the plugin form is located in the parent form, #parents and #array_parents must be known, but these are not available during the initial build phase. In order to have these properties available when building the plugin form's elements, let this method return a form element that has a #process callback and build the rest of the form in the callback. By the time the callback is executed, the element's #parents and #array_parents properties will have been set by the form API. For more documentation on #parents and

array_parents, see \Drupal\Core\Render\Element\FormElement.

Parameters

array $form

An associative array containing the initial structure of the plugin form.

FormStateInterface $form_state

The current state of the form. Calling code should pass on a subform state created through \Drupal\Core\Form\SubformState::createForSubform().

Return Value

array

The form structure.

validateConfigurationForm(array $form, FormStateInterface $form_state)

Form validation handler.

Parameters

array $form

An associative array containing the structure of the plugin form as built by static::buildConfigurationForm().

FormStateInterface $form_state

The current state of the form. Calling code should pass on a subform state created through \Drupal\Core\Form\SubformState::createForSubform().

submitConfigurationForm(array $form, FormStateInterface $form_state)

Form submission handler.

Parameters

array $form

An associative array containing the structure of the plugin form as built by static::buildConfigurationForm().

FormStateInterface $form_state

The current state of the form. Calling code should pass on a subform state created through \Drupal\Core\Form\SubformState::createForSubform().

entityQueryAlter(SelectInterface $query)

Allows the selection to alter the SelectQuery generated by EntityFieldQuery.

Parameters

SelectInterface $query

A Select Query object.

static ContainerFactoryPluginInterface create(ContainerInterface $container, array $configuration, string $plugin_id, mixed $plugin_definition)

Creates an instance of the plugin.

Parameters

ContainerInterface $container

The container to pull out services used in the plugin.

array $configuration

A configuration array containing information about the plugin instance.

string $plugin_id

The plugin ID for the plugin instance.

mixed $plugin_definition

The plugin implementation definition.

Return Value

ContainerFactoryPluginInterface

Returns an instance of this plugin.

static elementValidateFilter($element, FormStateInterface $form_state)

Form element validation handler; Filters the #value property of an element.

Parameters

$element
FormStateInterface $form_state

array getReferenceableEntities(string|null $match = NULL, string $match_operator = 'CONTAINS', int $limit = 0)

Gets the list of referenceable entities.

Parameters

string|null $match

(optional) Text to match the label against. Defaults to NULL.

string $match_operator

(optional) Operator to be used for string matching. Defaults to "CONTAINS".

int $limit

(optional) Limit the query to a given number of items. Defaults to 0, which indicates no limiting.

Return Value

array

A nested array of entities, the first level is keyed by the entity bundle, which contains an array of entity labels (escaped), keyed by the entity ID.

int countReferenceableEntities(string $match = NULL, string $match_operator = 'CONTAINS')

Counts entities that are referenceable.

Parameters

string $match

(optional) Text to match the label against. Defaults to NULL.

string $match_operator

(optional) Operator to be used for string matching. Defaults to "CONTAINS".

Return Value

int

The number of referenceable entities.

array validateReferenceableEntities(array $ids)

Validates which existing entities can be referenced.

Parameters

array $ids

An array of IDs to validate.

Return Value

array

An array of valid entity IDs.

EntityInterface createNewEntity(string $entity_type_id, string $bundle, string $label, int $uid)

Creates a new entity object that can be used as a valid reference.

Parameters

string $entity_type_id

The entity type ID.

string $bundle

The bundle name.

string $label

The entity label.

int $uid

The entity owner ID, if the entity type supports it.

Return Value

EntityInterface

An unsaved entity object.

EntityInterface[] validateReferenceableNewEntities(array $entities)

Validates which newly created entities can be referenced.

This method should replicate the logic implemented by \Drupal\Core\Entity\EntityReferenceSelection\SelectionInterface::validateReferenceableEntities(), but applied to newly created entities that have not been saved yet.

Parameters

array $entities

An array of entities to check.

Return Value

EntityInterface[]

The incoming $entities parameter, filtered for valid entities. Array keys are preserved.

protected QueryInterface buildEntityQuery(string|null $match = NULL, string $match_operator = 'CONTAINS')

Builds an EntityQuery to get referenceable entities.

Parameters

string|null $match

(Optional) Text to match the label against. Defaults to NULL.

string $match_operator

(Optional) The operation the matching should be done with. Defaults to "CONTAINS".

Return Value

QueryInterface

The EntityQuery object with the basic conditions and sorting applied to it.

protected reAlterQuery(AlterableInterface $query, $tag, $base_table)

Helper method: Passes a query to the alteration system again.

This allows Entity Reference to add a tag to an existing query so it can ask access control mechanisms to alter it again.

Parameters

AlterableInterface $query
$tag
$base_table

protected bool matchLabel(mixed $match, string $match_operator, string $label)

Matches an entity label to an input string.

Parameters

mixed $match

The value to compare. This can be any valid entity query condition value.

string $match_operator

The comparison operator.

string $label

The entity label to match against.

Return Value

bool

TRUE when matches, FALSE otherwise.