getMatchingContexts example

if (is_array($plugin_definition) && isset($plugin_definition['context_definitions'])) {
      return $plugin_definition['context_definitions'];
    }
    return NULL;
  }

  /** * {@inheritdoc} */
  public function checkRequirements(array $contexts, array $requirements) {
    foreach ($requirements as $requirement) {
      if ($requirement->isRequired() && !$this->getMatchingContexts($contexts$requirement)) {
        return FALSE;
      }
    }
    return TRUE;
  }

  /** * {@inheritdoc} */
  public function getMatchingContexts(array $contexts, ContextDefinitionInterface $definition) {
    return array_filter($contextsfunction DContextInterface $context) use ($definition) {
      

  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


  /** * @covers ::getMatchingContexts * * @dataProvider providerTestGetMatchingContexts */
  public function testGetMatchingContexts($contexts$requirement$expected = NULL) {
    if (is_null($expected)) {
      $expected = $contexts;
    }
    $this->assertSame($expected$this->contextHandler->getMatchingContexts($contexts$requirement));
  }

  /** * Provides data for testGetMatchingContexts(). */
  public function providerTestGetMatchingContexts() {
    $requirement_any = new ContextDefinition();

    $requirement_specific = new ContextDefinition('string');
    $requirement_specific->setConstraints(['Blank' => []]);

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