文档/容器/服务/Router

路由器服务

Router 服务旨在与 HLEB2 框架中的路由数据进行交互。

在控制器(以及从 Hleb\Base\Container 继承的所有类)中使用 Router 的方法,示例为通过路由名称形成相对 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

页面翻译:chatgpt 4-o
返回顶部