butils-8.x-1.x-dev/src/UriTrait.php

src/UriTrait.php
<?php

namespace Drupal\butils;

use Drupal\node\Entity\Node;
use Drupal\Core\Url;

/**
 * Trait Uri.
 *
 * Uri related utils.
 */
trait UriTrait {

  /**
   * Get string from URL respecting language aliases.
   *
   * @param string $uri
   *   Drupal uri.
   * @param array $options
   *   Url options.
   */
  public function uriToString($uri, array $options = []) {
    $uri_parts = parse_url($uri);
    $string = '';
    if (empty($uri) || $uri_parts == FALSE) {
      return '';
    }
    if (!empty($uri_parts['scheme'])) {
      if ($uri_parts['scheme'] === 'internal') {
        return str_replace('internal:', '', $uri);
      }
      elseif ($uri_parts['scheme'] === 'entity') {
        $parts = explode('/', $uri_parts['path']);
        if ($parts[0] === 'node' && !empty($parts[1])) {
          $node = Node::load($parts[1]);
          if (!empty($node)) {
            $string = $node->toUrl()->setAbsolute()->toString();
          }
        }
      }
      elseif ($uri_parts['scheme'] === 'internal') {
        $string = $uri_parts['path'];
      }
      else {
        $string = $uri;
      }
    }
    if (empty($string)) {
      $string = Url::fromUri($uri, $options)->toString();
    }

    return $string;
  }

}

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

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