culturefeed_agenda-1.0.x-dev/src/Controller/AgendaDetailController.php

src/Controller/AgendaDetailController.php
<?php

namespace Drupal\culturefeed_agenda\Controller;

use CultuurNet\SearchV3\ValueObjects\Event;
use Drupal\Core\Controller\ControllerBase;
use Drupal\Core\Language\LanguageManagerInterface;
use Drupal\culturefeed_agenda\Url;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\HttpFoundation\RedirectResponse;

/**
 * Defines a route controller for Culturfeed event details.
 */
class AgendaDetailController extends ControllerBase {

  /**
   * The current language.
   *
   * @var \Drupal\Core\Language\LanguageInterface
   */
  protected $currentLanguage;

  /**
   * AgendaDetailController constructor.
   *
   * @param \Drupal\Core\Language\LanguageManagerInterface $languageManager
   *   The language manager.
   */
  public function __construct(LanguageManagerInterface $languageManager) {
    $this->currentLanguage = $languageManager->getCurrentLanguage();
  }

  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container) {
    return new static(
      $container->get('language_manager')
    );
  }

  /**
   * Detail route with an upcasted Culturefeed event.
   *
   * @param string $slug
   *   The event slug.
   * @param \CultuurNet\SearchV3\ValueObjects\Event $event
   *   The Culturefeed event to display.
   *
   * @return array|\Symfony\Component\HttpFoundation\RedirectResponse
   *   Return render array or redirect to event detail page.
   */
  public function detail($slug, Event $event) {

    if ($slug !== Url::eventSlug($event, $this->currentLanguage->getId())) {
      return new RedirectResponse(Url::toEventDetail($event)->toString(), 301);
    }

    return [
      '#theme' => 'culturefeed_event',
      '#item' => $event,
      '#attached' => [
        'library' => [
          'culturefeed_agenda/google-maps',
        ],
      ],
    ];
  }

  /**
   * Title callback for detail pages.
   *
   * @param \CultuurNet\SearchV3\ValueObjects\Event $event
   *   The Culturefeed event being displayed.
   *
   * @return \Drupal\Component\Render\FormattableMarkup
   *   The page title.
   */
  public function title(Event $event) {
    return $event->getName()->getValueForLanguage($this->currentLanguage->getId());
  }

}

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

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