hn-8.x-1.x-dev/src/Plugin/HnPathResolver/RoutedUrlResolver.php

src/Plugin/HnPathResolver/RoutedUrlResolver.php
<?php

namespace Drupal\hn\Plugin\HnPathResolver;

use Drupal\Core\Url;
use Drupal\hn\HnPathResolverResponse;
use Drupal\hn\Plugin\HnPathResolverBase;

/**
 * This provides a 404 resolver.
 *
 * @HnPathResolver(
 *   id = "hn_routed_url"
 * )
 */
class RoutedUrlResolver extends HnPathResolverBase {

  /**
   * {@inheritdoc}
   */
  public function resolve($path) {
    $url = Url::fromUserInput('/' . trim($path, '/'));

    if (!$url->isRouted()) {
      return NULL;
    }

    if ($url->getRouteName() === '<front>') {
      $front_page = \Drupal::config('system.site')->get('page.front');
      $url = Url::fromUri('internal:/' . trim($front_page, '/'));
    }

    $params = $url->getRouteParameters();
    $entity_type = key($params);

    if ($entity_type) {
      return new HnPathResolverResponse(
        \Drupal::entityTypeManager()
          ->getStorage($entity_type)
          ->load($params[$entity_type])
      );
    }
    if (explode('.', $url->getRouteName())[0] === 'view') {
      return new HnPathResolverResponse(
        \Drupal::entityTypeManager()
          ->getStorage('view')
          ->load(explode('.', $url->getRouteName())[1])
      );
    }

    return NULL;
  }

}

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

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