1. 8.5.x core/lib/Drupal/Core/Annotation/ContextDefinition.php ContextDefinition
  2. 8.5.x core/lib/Drupal/Core/Plugin/Context/ContextDefinition.php ContextDefinition
  3. 8.0.x core/lib/Drupal/Core/Annotation/ContextDefinition.php ContextDefinition
  4. 8.0.x core/lib/Drupal/Core/Plugin/Context/ContextDefinition.php ContextDefinition
  5. 8.1.x core/lib/Drupal/Core/Plugin/Context/ContextDefinition.php ContextDefinition
  6. 8.1.x core/lib/Drupal/Core/Annotation/ContextDefinition.php ContextDefinition
  7. 8.2.x core/lib/Drupal/Core/Plugin/Context/ContextDefinition.php ContextDefinition
  8. 8.2.x core/lib/Drupal/Core/Annotation/ContextDefinition.php ContextDefinition
  9. 8.3.x core/lib/Drupal/Core/Annotation/ContextDefinition.php ContextDefinition
  10. 8.3.x core/lib/Drupal/Core/Plugin/Context/ContextDefinition.php ContextDefinition
  11. 8.4.x core/lib/Drupal/Core/Annotation/ContextDefinition.php ContextDefinition
  12. 8.4.x core/lib/Drupal/Core/Plugin/Context/ContextDefinition.php ContextDefinition
  13. 8.6.x core/lib/Drupal/Core/Plugin/Context/ContextDefinition.php ContextDefinition
  14. 8.6.x core/lib/Drupal/Core/Annotation/ContextDefinition.php ContextDefinition

Defines a context definition annotation object.

Some plugins require various data contexts in order to function. This class supports that need by allowing the contexts to be easily defined within an annotation and return a ContextDefinitionInterface implementing class.


Expanded class hierarchy of ContextDefinition

Related topics


core/lib/Drupal/Core/Annotation/ContextDefinition.php, line 72


View source
class ContextDefinition extends Plugin {

   * The ContextDefinitionInterface object.
   * @var \Drupal\Core\Plugin\Context\ContextDefinitionInterface
  protected $definition;

   * Constructs a new context definition object.
   * @param array $values
   *   An associative array with the following keys:
   *   - value: The required data type.
   *   - label: (optional) The UI label of this context definition.
   *   - required: (optional) Whether the context definition is required.
   *   - multiple: (optional) Whether the context definition is multivalue.
   *   - description: (optional) The UI description of this context definition.
   *   - default_value: (optional) The default value in case the underlying
   *     value is not set.
   *   - class: (optional) A custom ContextDefinitionInterface class.
   * @throws \Exception
   *   Thrown when the class key is specified with a non
   *   ContextDefinitionInterface implementing class.
  public function __construct(array $values) {
    $values += [
      'required' => TRUE,
      'multiple' => FALSE,
      'default_value' => NULL,

    // Annotation classes extract data from passed annotation classes directly
    // used in the classes they pass to.
    foreach ([
    ] as $key) {

      // @todo Remove this workaround in https://www.drupal.org/node/2362727.
      if (isset($values[$key]) && $values[$key] instanceof TranslatableMarkup) {
        $values[$key] = (string) $values[$key]
      else {
        $values[$key] = NULL;
    if (isset($values['class']) && !in_array('Drupal\\Core\\Plugin\\Context\\ContextDefinitionInterface', class_implements($values['class']))) {
      throw new \Exception('ContextDefinition class must implement \\Drupal\\Core\\Plugin\\Context\\ContextDefinitionInterface.');
    $class = isset($values['class']) ? $values['class'] : 'Drupal\\Core\\Plugin\\Context\\ContextDefinition';
    $this->definition = new $class($values['value'], $values['label'], $values['required'], $values['multiple'], $values['description'], $values['default_value']);

   * Returns the value of an annotation.
   * @return \Drupal\Core\Plugin\Context\ContextDefinitionInterface
  public function get() {
    return $this->definition;



Contains filters are case sensitive
Namesort descending Modifiers Type Description Overrides
ContextDefinition::$definition protected property The ContextDefinitionInterface object. Overrides Plugin::$definition
ContextDefinition::get public function Returns the value of an annotation. Overrides Plugin::get
ContextDefinition::__construct public function Constructs a new context definition object. Overrides Plugin::__construct
Plugin::getClass public function Gets the class of the annotated class. Overrides AnnotationInterface::getClass
Plugin::getId public function Gets the unique ID for this annotated class. Overrides AnnotationInterface::getId
Plugin::getProvider public function Gets the name of the provider of the annotated class. Overrides AnnotationInterface::getProvider
Plugin::parse protected function Parses an annotation into its definition.
Plugin::setClass public function Sets the class of the annotated class. Overrides AnnotationInterface::setClass
Plugin::setProvider public function Sets the name of the provider of the annotated class. Overrides AnnotationInterface::setProvider