component_library-1.0.x-dev/src/ComponentLibraryTwigExtension.php

src/ComponentLibraryTwigExtension.php
<?php

declare(strict_types=1);

namespace Drupal\component_library;

use Drupal\component_library\Entity\ComponentLibraryVariant;
use Twig\Extension\AbstractExtension;
use Twig\TwigFunction;

/**
 * Twig extension.
 */
final class ComponentLibraryTwigExtension extends AbstractExtension {

  /**
   * {@inheritdoc}
   */
  public function getFunctions(): array {
    return [
      new TwigFunction('component_library_variant', [self::class, 'variant']),
    ];
  }

  /**
   * Returns the render array for a component library variant.
   */
  public static function variant(string $name, array $arguments = []): array {
    /** @var \Drupal\component_library\Entity\ComponentLibraryVariant $variant */
    $variant = \Drupal::entityTypeManager()->getStorage('component_library_variant')->load($name);
    if (!$variant instanceof ComponentLibraryVariant) {
      return [];
    }
    return [
      '#type' => 'inline_template',
      '#template' => $variant->get('template'),
      '#context' => $arguments,
    ];
  }

}

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

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