communico_plus-1.0.0-beta3/src/Plugin/Block/CommunicoPlusFilterBlock.php

src/Plugin/Block/CommunicoPlusFilterBlock.php
<?php

namespace Drupal\communico_plus\Plugin\Block;

use Drupal\Core\Block\Annotation\Block;
use Drupal\Core\Block\BlockBase;
use Drupal\Core\Form\FormBuilderInterface;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;

/**
 * Provides a Communico Filter Block.
 *
 * @Block(
 *   id = "communico_plus_filter_block",
 *   admin_label = @Translation("Communico Plus Filter Block"),
 * )
 */
class CommunicoPlusFilterBlock extends BlockBase implements ContainerFactoryPluginInterface {

  /**
   * @var \Drupal\Core\Form\FormBuilderInterface
   *   The Drupal form builder interface.
   */
  protected FormBuilderInterface $formBuilder;

  /**
   * @param array $configuration
   * @param $plugin_id
   * @param $plugin_definition
   * @param FormBuilderInterface $form_builder
   *
   */
  public function __construct(
    array $configuration,
          $plugin_id,
          $plugin_definition,
    FormBuilderInterface $form_builder) {
    parent::__construct($configuration, $plugin_id, $plugin_definition);
    $this->formBuilder = $form_builder;
  }

  /**
   * @param ContainerInterface $container
   * @param array $configuration
   * @param $plugin_id
   * @param $plugin_definition
   *
   * @return CommunicoPlusFilterBlock|static
   *
   */
  public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
    return new static(
      $configuration,
      $plugin_id,
      $plugin_definition,
      $container->get('form_builder'),
    );
  }

  /**
   * {@inheritdoc}
   */
  public function build() {
    $config = $this->getConfiguration();
    $build = [
      '#theme' => 'communico_plus_filter_block',
      '#events' => $this->buildCommunicoPlusFilterBlock($config),
    ];
    $build['#cache']['max-age'] = 0;
    return $build;
  }

  /**
   * @return int
   */
  public function getCacheMaxAge() {
    return 0;
  }

  /**
   * {@inheritdoc}
   */
  public function blockForm($form, FormStateInterface $form_state) {
    $form = parent::blockForm($form, $form_state);
    $config = $this->getConfiguration();
    $form['communico_plus_filter_block_limit'] = array(
      '#type' => 'textfield',
      '#title' => $this->t('Limit'),
      '#description' => $this->t('Limit the number of results returned'),
      '#default_value' => isset($config['communico_plus_filter_block_limit']) ? $config['communico_plus_filter_block_limit'] : '10',
    );
    return $form;
  }

  /**
   * {@inheritdoc}
   */
  public function blockSubmit($form, FormStateInterface $form_state) {
    $this->configuration['communico_plus_filter_block_limit'] = $form_state->getValue('communico_plus_filter_block_limit');
  }

  /**
   * Build the communico_plus event details block
   * @param  array $config
   * @return array
   */
  public function buildCommunicoPlusFilterBlock($config) {
    $filterForm = $this->formBuilder->getForm('Drupal\communico_plus\Form\CommunicoPlusFilterForm');
    $rendered_events['#filter_form'] = [$filterForm];
    return $rendered_events;
  }




}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc