waRouting

Управление данными маршрутизации HTTP-запросов

Содержание...

Для получения экземпляра класса waRouting и вызова его публичных нестатичных методов, используйте конструкцию wa()->getRouting(), например:

wa()->getRouting()->getCurrentUrl();

Методы

  • clearUrl

    Очищает адрес правила маршрутизации от служебных символов.

  • getByApp

    Возвращает все правила маршрутизации во фронтенде, настроенные для указанного приложения.

  • getCurrentUrl

    Возвращает относительный URL текущего HTTP-запроса без GET-параметров.

  • getDomain

    Возвращает адрес сайта из URL текущего HTTP-запроса либо указанный адрес сайта.

  • getDomains

    Возвращает массив адресов всех сайтов.

  • getRootUrl

    Возвращает корневой URL правила маршрутизации, соответствующего текущему HTTP-запросу во фронтенде.

  • getRoute

    Возвращает параметры правила маршрутизации для текущего HTTP-запроса во фронтенде.

  • getRoutes

    Возвращает массив правил маршрутизации указанного либо текущего сайта.

  • getUrl

    Возвращает URL для запроса через фронтенд, сформированный на основании указанных параметров маршрутизации.

  • getUrlByRoute

    Возвращает корневой URL запроса во фронтенде для указанного правила маршрутизации.

  • isAlias

    Возвращает основной адрес сайта для сайта-псевдонима.

  • getRuleForUrl

    Возвращает параметры правила маршрутизации сайта, которое обрабатывает запросы на указанный URL.

public static function clearUrl ($url)

Очищает адрес правила маршрутизации от служебных символов.

Параметры

  • $url

    Адрес правила маршрутизации.

Пример

waRouting::clearUrl('site/*');

Результат

'site/'

public function getByApp ($app_id, $domain = null)

Возвращает все правила маршрутизации во фронтенде, настроенные для указанного приложения.

Параметры

  • $app_id

    ID приложения, правила маршрутизации которого необходимо вернуть.

  • $domain

    Адрес сайта, правила маршрутизации которого необходимо вернуть. Если не указано (по умолчанию), то будут возвращены правила маршрутизации для всех настроенных сайтов.

Пример 1

wa()->getRouting()->getByApp('shop');

Результат

array(
  'domain1.ru' => array(
    1 => array(
      'url' => '*',
      'app' => 'shop',
      '_name' => 'Магазин №1',
      'theme' => 'default',
      'theme_mobile' => 'default',
      'locale' => 'ru_RU',
      'title' => '',
      'meta_keywords' => '',
      'meta_description' => '',
      'og_title' => '',
      'og_image' => '',
      'og_video' => '',
      'og_description' => '',
      'og_type' => '',
      'url_type' => '1',
      'type_id' => '0',
      'currency' => 'RUB',
      'stock_id' => '1',
      'public_stocks' => '0',
      'drop_out_of_stock' => '2',
      'payment_id' => '0',
      'shipping_id' => '0',
    ),
  ),
  'domain2.ru' => array(
    3 => array(
      'url' => 'shop/*',
      'app' => 'shop',
      '_name' => 'Магазин №2',
      'theme' => 'custom',
      'theme_mobile' => 'mobile',
      'locale' => 'ru_RU',
      'title' => '',
      'meta_keywords' => '',
      'meta_description' => '',
      'og_title' => '',
      'og_image' => '',
      'og_video' => '',
      'og_description' => '',
      'og_type' => '',
      'url_type' => '0',
      'type_id' => '0',
      'currency' => 'RUB',
      'stock_id' => '2',
      'public_stocks' => '0',
      'drop_out_of_stock' => '0',
      'payment_id' => '0',
      'shipping_id' => '0',
    ),
  ),
)

Пример 2

wa()->getRouting()->getByApp('shop', 'domain1.ru')

Результат

array(
  'url' => '*',
  'app' => 'shop',
  '_name' => 'Магазин №1',
  'theme' => 'default',
  'theme_mobile' => 'default',
  'locale' => 'ru_RU',
  'title' => '',
  'meta_keywords' => '',
  'meta_description' => '',
  'og_title' => '',
  'og_image' => '',
  'og_video' => '',
  'og_description' => '',
  'og_type' => '',
  'url_type' => '1',
  'type_id' => '0',
  'currency' => 'RUB',
  'stock_id' => '1',
  'public_stocks' => '0',
  'drop_out_of_stock' => '2',
  'payment_id' => '0',
  'shipping_id' => '0',
),

public function getCurrentUrl()

Возвращает относительный URL текущего HTTP-запроса без GET-параметров.

Пример

$current_url = wa()->getRouting()->getCurrentUrl();

public function getDomain ($domain = null, $check = false, $return_alias = true)

Возвращает адрес сайта из URL текущего HTTP-запроса либо указанный адрес сайта.

Параметры

  • $domain

    Адрес сайта. Если не указан (по умолчанию), то адрес сайта будет получен из URL текущего HTTP-запроса. Если указан, то будет возвращен указанный адрес сайта без дополнительных проверок.

  • $check

    Флаг, требующий проверки наличия сайта с адресом, полученным из URL HTTP-запроса, в числе настроенных в маршрутизации фреймворка. Если адрес сайта, полученный из URL HTTP-запроса, не найден в конфигурации маршрутизации фреймворка, то вместо этого адреса ищется основной адрес сайта без префикса www., если в нем есть такой префикс (либо с префиксом, если префикс отсутствует в URL запроса).

    Если основной адрес сайта будет найден в конфигурации маршрутизации, то в бекенде будет возвращен этот основной адрес, а во фронтенде будет выполнен 301-й редирект на измененный вариант URL запроса с использованием основного адреса сайта — без учета значения параметра $return_alias.

  • $return_alias

    Флаг, требующий вернуть адрес основного сайта, если адрес сайта, полученный из URL HTTP-запроса, настроен в качестве псевдонима для другого (основного) сайта.

Пример

$main_site_domain = wa()->getRouting()->getDomain(null, false, true);

public function getDomains()

Возвращает массив адресов всех сайтов, настроенных во фреймворке.

Пример

wa()->getRouting()->getDomains();

Результат

array(
  0 => 'domain1.ru',
  1 => 'domain2.ru',
  2 => 'domain3.ru',
)

public function getRootUrl()

Возвращает корневой URL правила маршрутизации, соответствующего текущему HTTP-запросу во фронтенде.

Пример

wa()->getRouting()->getRootUrl();

Результат

//для правила маршрутизации с адресом shop/*
'shop/'
    
//для правила маршрутизации с адресом *
''

public function getRoute ($name = null)

Возвращает параметры правила маршрутизации для текущего HTTP-запроса во фронтенде.

Параметры

  • $name

    Идентификатор параметра правила маршрутизации, значение которого необходимо вернуть. Если не указан (по умолчанию), то метод вернет массив всех параметров правила маршрутизации.

Пример 1

wa()->getRouting()->getRoute();

Результат

array(
  'url' => 'site/*',
  'app' => 'site',
  'theme' => 'default',
  'theme_mobile' => 'default',
  'locale' => 'ru_RU',
)

Пример 2

wa()->getRouting()->getRoute('theme');

Результат

'default'

public function getRoutes ($domain = null)

Возвращает массив правил маршрутизации указанного либо текущего сайта.

Параметры

  • $domain

    Адрес сайта, список правил маршрутизации которого нужно вернуть. Если не указан (по умолчанию), то метод вернет список правил маршрутизации того сайта, к фронтенду которого выполняется текущий HTTP-запрос.

Пример

wa()->getRouting()->getRoutes();

Результат

array(
  3 => array(
    'url' => 'site/*',
    'app' => 'site',
    'theme' => 'default',
    'theme_mobile' => 'default',
    'locale' => 'ru_RU',
  ),
  2 => array(
    'url' => 'photos/*',
    'app' => 'photos',
    'theme' => 'default',
    'theme_mobile' => 'default',
    'locale' => 'ru_RU',
    'url_type' => '0',
    'title' => '',
    'meta_keywords' => '',
    'meta_description' => '',
  ),
  1 => array(
    'url' => '*',
    'app' => 'shop',
    'theme' => 'default',
    'theme_mobile' => 'default',
    'locale' => 'ru_RU',
    'title' => '',
    'meta_keywords' => '',
    'meta_description' => '',
    'og_title' => '',
    'og_image' => '',
    'og_video' => '',
    'og_description' => '',
    'og_type' => '',
    'url_type' => '1',
    'type_id' => '0',
    'currency' => 'RUB',
    'stock_id' => '7',
    'public_stocks' => '0',
    'drop_out_of_stock' => '2',
    'payment_id' => '0',
    'shipping_id' => '0',
  ),
)

public function getUrl ($path, $params = array(), $absolute = false, $domain_url = null, $route_url = null)

Возвращает URL для запроса через фронтенд, сформированный на основании указанных параметров маршрутизации.

Параметры

  • $path

    Идентификаторы приложения, модуля и экшена, разделенные косой чертой (/).

  • $params

    Ассоциативный массив необязательных параметров со следующими элементами:

    • 'domain': домен, указанный в настройках одного из сайтов, настроенных во фреймворке
    • 'module': идентификатор модуля
    • 'action': идентификатор экшена
    • динамические параметры URL, описанные в файле routing.php приложения для указанного сочетания модуля и экшена; например, для следующего сочетания таким динамическим параметром является category_url:
      'category/<category_url>/' => 'frontend/category',

    Если модуль и экшен указаны в этом массиве дополнительных параметров, то указывать их в первом (строковом) параметре метода не нужно.

  • $absolute

    Флаг, обозначающий необходимость вернуть абсолютный URL вместо относительного (по умолчанию).

  • $domain_url

    Адрес сайта, с учетом которого нужно сформировать URL.

  • $route_url

    Адрес правила маршрутизации, с учетом которого нужно сформировать URL.

Пример

wa()->getRouting()->getUrl(
    'shop/frontend/category/<category_url>/',
    array('category_url' => 'sale'),
    true,
    'domain2.ru',
    'facebook/*'
);

Результат

'http://domain2.ru/facebook/category/sale/'

public static function getUrlByRoute ($route, $domain = null)

Возвращает корневой URL запроса во фронтенде для указанного правила маршрутизации.

Параметры

  • $route

    Массив параметров правила маршрутизации, для которого нужно сформировать URL.

  • $domain

    Адрес сайта, с учетом которого нужно сформировать URL.

    Если адрес сайта указан, то метод вернет абсолютный корневой URL для указанного правила маршрутизации. Если адрес сайта не указан (по умолчанию), то метод вернет относительный адрес правила маршрутизации без символа * в конце.

Пример

waRouting::getUrlByRoute(
    array('url' => 'shop/*'),
    'domain.ru'
);

Результат

'http://domain.ru/shop/'

public function isAlias ($domain)

Возвращает основной адрес сайта для сайта-псевдонима.

Параметры

  • $domain

    Адрес сайта-псевдонима, для которого нужно вернуть адрес основного сайта.

Пример

wa()->getRouting()->isAlias('alias-domain.ru');

Результат

'main-domain.ru'

public function getRuleForUrl ($routes, $url)

Возвращает параметры правила маршрутизации сайта, которое обрабатывает запросы на указанный URL.

Параметры

  • $routes

    Массив параметров правил маршрутизации какого-либо сайта из конфигурационного файла wa-config/routing.php.

  • $url

    Относительный URL (без символа / в начале), для которого на данном сайте нужно найти обрабатывающее его правило маршрутизации.

Пример

$routing = wa()->getRouting();
$domain_routes = $routing->getRoutes('mydomain.ru');
$url_route = $routing->getRuleForUrl($domain_routes, 'shop/');
wa_dump($url_route);

Результат

[
    'url' => 'shop/*',
    'app' => 'shop',
    'theme' => 'default',
    'theme_mobile' => 'default',
    'checkout_version' => '2',
    'locale' => 'ru_RU',
    'title' => '',
    'meta_keywords' => '',
    'meta_description' => '',
    'og_title' => '',
    'og_image' => '',
    'og_video' => '',
    'og_description' => '',
    'og_type' => '',
    'og_url' => '',
    'url_type' => '0',
    'products_per_page' => '',
    'type_id' => '0',
    'currency' => 'RUB',
    'public_stocks' => '0',
    'drop_out_of_stock' => '0',
    'payment_id' => '0',
    'shipping_id' => '0',
    'checkout_storefront_id' => '41c1fb59db445e1b2aa68102f56e161e',
]