Документация/Контейнер/Сервисы/Router

Сервис Router

Для взаимодействия с данными маршрутов во фреймворке HLEB2 предназначен сервис Router.

Способы использования Router в контроллерах (и всех классах, унаследованных от Hleb\Base\Container) на примере формирования относительного URL по названию маршрута:

// variant 1
use Hleb\Reference\RouterInterface;
$uri $this->container->get(RouterInterface::class)->url('route.name');

// variant 2
$uri $this->container->router()->url('route.name');

// variant 3
$uri $this->router()->url('route.name');

Пример обращения к Router в коде приложения:

// variant 1
use Hleb\Static\Container;
use 
Hleb\Reference\RouterInterface;
$uri Container::get(RouterInterface::class)->url('route.name');

// variant 2
use Hleb\Static\Router;
$uri Router::url('route.name');

Также объект Router может быть получен через внедрение зависимостей по интерфейсу Hleb\Reference\Interface\Router.

Для упрощения примеров, далее они будут содержать только обращение через Hleb\Static\Router.


#url()

Метод url() предназначен для преобразования названия маршрута в относительный адрес URL. Простой пример:

Route::get('/example/simple/page''...')->name('simple.route.name');
use Hleb\Static\Router;

echo 
Router::url('simple.route.name'); // /example/simple/page

Так как в адресе маршрута могут быть динамические параметры и не обязательная последняя часть, то при их наличии нужно указать это в дополнительных аргументах.

Route::get('/example/{type}/page?''...')->name('dynamic.route.name');
use Hleb\Static\Router;

$uri Router::url('dynamic.route.name', ['type' => 'special'], endPartfalse);

#address()

Метод address() аналогичен методу url(), только возвращает полный URL адрес с HTTP-схемой и доменным именем из текущего запроса. Так как домен присваивается только текущий, для другого домена используйте конкатенацию с Route::url().

Возвращаемый адрес для указанных методов будет содержать конечный слеш или не содержать в зависимости от соответствующих настроек фреймворка.

Встроенные функции фреймворка url() и address() представляют собой сокращённое написание вызова одноимённых методов Router.


#name()

При помощи метода name() можно узнать название текущего маршрута, если оно ему назначено.


#data()

Метод data() возвращает данные для текущего middleware, если они были установлены в маршруте, он может быть использован только в middleware.

Redirect Settings

Страница создана: @fomiash
К началу страницы