interface ContextProviderInterface
Defines an interface for providing plugin contexts.
Implementations only need to deal with unqualified context IDs so they only need to be unique in the context of a given service provider.
The fully qualified context ID then includes the service ID, e.g. "@service_id:unqualified_context_id".
Hierarchy
- interface \Drupal\Core\Plugin\Context\ContextProviderInterface
 
Expanded class hierarchy of ContextProviderInterface
All classes that implement ContextProviderInterface
See also
\Drupal\Core\Plugin\Context\ContextRepositoryInterface
7 files declare their use of ContextProviderInterface
- CurrentLanguageContext.php in core/
lib/ Drupal/ Core/ Language/ ContextProvider/ CurrentLanguageContext.php  - CurrentUserContext.php in core/
modules/ user/ src/ ContextProvider/ CurrentUserContext.php  - FakeViewModeContext.php in core/
modules/ layout_builder/ tests/ modules/ layout_builder_fieldblock_test/ src/ ContextProvider/ FakeViewModeContext.php  - IHaveRuntimeContexts.php in core/
modules/ layout_builder/ tests/ modules/ layout_builder_test/ src/ ContextProvider/ IHaveRuntimeContexts.php  - MultipleStaticContext.php in core/
modules/ block/ tests/ modules/ block_test/ src/ ContextProvider/ MultipleStaticContext.php  
File
- 
              core/
lib/ Drupal/ Core/ Plugin/ Context/ ContextProviderInterface.php, line 16  
Namespace
Drupal\Core\Plugin\ContextView source
interface ContextProviderInterface {
  
  /**
   * Gets runtime context values for the given context IDs.
   *
   * For context-aware plugins to function correctly, all of the contexts that
   * they require must be populated with values. So this method should set a
   * value for each context that it adds. For example:
   *
   * @code
   *   // Determine a specific node to pass as context to a block.
   *   $node = ...
   *
   *   // Set that specific node as the value of the 'node' context.
   *   $context = EntityContext::fromEntity($node);
   *   return ['node' => $context];
   * @endcode
   *
   * On the other hand, there are cases, on which providers no longer are
   * possible to provide context objects, even without the value, so the caller
   * should not expect it.
   *
   * @param string[] $unqualified_context_ids
   *   The requested context IDs. The context provider must only return contexts
   *   for those IDs.
   *
   * @return \Drupal\Core\Plugin\Context\ContextInterface[]
   *   The determined available contexts, keyed by the unqualified context_id.
   *
   * @see \Drupal\Core\Plugin\Context\ContextProviderInterface:getAvailableContexts()
   */
  public function getRuntimeContexts(array $unqualified_context_ids);
  
  /**
   * Gets all available contexts for the purposes of configuration.
   *
   * When a context aware plugin is being configured, the configuration UI must
   * know which named contexts are potentially available, but does not care
   * about the value, since the value can be different for each request, and
   * might not be available at all during the configuration UI's request.
   *
   * For example:
   * @code
   *   // During configuration, there is no specific node to pass as context.
   *   // However, inform the system that a context named 'node' is
   *   // available, and provide its definition, so that context aware plugins
   *   // can be configured to use it. When the plugin, for example a block,
   *   // needs to evaluate the context, the value of this context will be
   *   // supplied by getRuntimeContexts().
   *   $context = EntityContext::fromEntityTypeId('node');
   *   return ['node' => $context];
   * @endcode
   *
   * @return \Drupal\Core\Plugin\Context\ContextInterface[]
   *   All available contexts keyed by the unqualified context ID.
   *
   * @see \Drupal\Core\Plugin\Context\ContextProviderInterface::getRuntimeContext()
   */
  public function getAvailableContexts();
}
Members
| Title Sort descending | Modifiers | Object type | Summary | Overrides | 
|---|---|---|---|---|
| ContextProviderInterface::getAvailableContexts | public | function | Gets all available contexts for the purposes of configuration. | 7 | 
| ContextProviderInterface::getRuntimeContexts | public | function | Gets runtime context values for the given context IDs. | 7 | 
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.