arch-8.x-1.x-dev/modules/price/src/Plugin/views/argument/PriceTypeId.php

modules/price/src/Plugin/views/argument/PriceTypeId.php
<?php

namespace Drupal\arch_price\Plugin\views\argument;

use Drupal\arch_price\Entity\Storage\PriceTypeStorageInterface;
use Drupal\views\Plugin\views\argument\StringArgument;
use Symfony\Component\DependencyInjection\ContainerInterface;

/**
 * Argument handler to accept a price type id.
 *
 * @ingroup views_argument_handlers
 *
 * @ViewsArgument("price_type_id")
 */
class PriceTypeId extends StringArgument {

  /**
   * The price type storage.
   *
   * @var \Drupal\arch_price\Entity\Storage\PriceTypeStorageInterface
   */
  protected $priceTypeStorage;

  /**
   * Constructs the PriceTypeId object.
   *
   * @param array $configuration
   *   A configuration array containing information about the plugin instance.
   * @param string $plugin_id
   *   The plugin_id for the plugin instance.
   * @param mixed $plugin_definition
   *   The plugin implementation definition.
   * @param \Drupal\arch_price\Entity\Storage\PriceTypeStorageInterface $price_type_storage
   *   The price type storage.
   */
  public function __construct(
    array $configuration,
    $plugin_id,
    $plugin_definition,
    PriceTypeStorageInterface $price_type_storage,
  ) {
    parent::__construct(
      $configuration,
      $plugin_id,
      $plugin_definition
    );
    $this->priceTypeStorage = $price_type_storage;
  }

  /**
   * {@inheritdoc}
   */
  public static function create(
    ContainerInterface $container,
    array $configuration,
    $plugin_id,
    $plugin_definition,
  ) {
    return new static(
      $configuration,
      $plugin_id,
      $plugin_definition,
      $container->get('entity_type.manager')->getStorage('price_type')
    );
  }

  /**
   * Override the behavior of title(). Get the name of the price type.
   */
  public function title() {
    $price_type = $this->priceTypeStorage->load($this->argument);
    if ($price_type) {
      return $price_type->label();
    }

    return $this->t('No price type', [], ['context' => 'arch_price']);
  }

}

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

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