stacks-8.x-1.x-dev/src/TwigExtension/EmbedWidgetInstance.php

src/TwigExtension/EmbedWidgetInstance.php
<?php

namespace Drupal\stacks\TwigExtension;

use Drupal\stacks\Widget\WidgetData;
use Drupal\stacks\Entity\WidgetEntity;
use Drupal\stacks\Entity\WidgetInstanceEntity;
use Twig\Extension\AbstractExtension;
use Twig\TwigFunction;

/**
 * Class EmbedWidgetInstance.
 * @package Drupal\stacks\TwigExtension
 *
 * Allows outputting a widget instance via a twig extension.
 */
class EmbedWidgetInstance extends AbstractExtension {

  public function getFunctions() {
    return [
      new TwigFunction('widget_instance_embed',
        [$this, 'output_widget_instance'],
        ['is_safe' => ['html']]
      ),
    ];
  }

  public function getName() {
    return 'widget_instance_embed';
  }

  public function output_widget_instance($widget_entity_id, $widget_instace_id) {
    $output = "<p>" . t("Widget instance doesn't exist.") . "</p>";

    $widget_data = new WidgetData();
    $node = \Drupal::routeMatch()->getParameter('node');
    $widget_instance_entity = WidgetInstanceEntity::load($widget_instace_id);
    $widget_entity = WidgetEntity::load($widget_entity_id);

    if ($node && $widget_instance_entity && $widget_entity) {
      $render_array = $widget_data->output($node, $widget_instance_entity, $widget_entity);
      $output = \Drupal::service('renderer')->render($render_array);
    }

    print $output;
  }

}

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

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