contextHandler example


  public function getPlugin(array $contexts = []) {
    $plugin = $this->pluginManager()->createInstance($this->getPluginId()$this->getConfiguration());
    if ($contexts && $plugin instanceof ContextAwarePluginInterface) {
      $this->contextHandler()->applyContextMapping($plugin$contexts);
    }
    return $plugin;
  }

  /** * Wraps the component plugin manager. * * @return \Drupal\Core\Block\BlockManagerInterface * The plugin manager. */
  protected function pluginManager() {
    

  public function getLayout(array $contexts = []) {
    $layout = $this->layoutPluginManager()->createInstance($this->getLayoutId()$this->layoutSettings);
    if ($contexts) {
      $this->contextHandler()->applyContextMapping($layout$contexts);
    }
    return $layout;
  }

  /** * Gets the layout plugin ID for this section. * * @return string * The layout plugin ID. * * @internal * This method should only be used by code responsible for storing the data. */

  protected function addContextAssignmentElement(ContextAwarePluginInterface $plugin, array $contexts) {
    $element = [];
    foreach ($plugin->getContextDefinitions() as $context_slot => $definition) {
      $valid_contexts = $this->contextHandler()->getMatchingContexts($contexts$definition);
      $options = [];
      foreach ($valid_contexts as $context_id => $context) {
        $element['#tree'] = TRUE;
        $options[$context_id] = $context->getContextDefinition()->getLabel();
        $element[$context_slot] = [
          '#type' => 'value',
          '#value' => $context_id,
        ];
      }

      // Show the context selector only if there is more than 1 option to choose

  protected function contextHandler() {
    return \Drupal::service('context.handler');
  }

  /** * See \Drupal\Core\Plugin\Context\ContextAwarePluginManagerInterface::getDefinitionsForContexts(). */
  public function getDefinitionsForContexts(array $contexts = []) {
    return $this->contextHandler()->filterPluginDefinitionsByContexts($contexts$this->getDefinitions());
  }

  /** * See \Drupal\Component\Plugin\Discovery\DiscoveryInterface::getDefinitions(). */
  abstract public function getDefinitions();

}
Home | Imprint | This part of the site doesn't use cookies.