Для получения экземпляра класса 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', ]