我需要在路由定义中设置一个自定义属性并将其用作路由中间件。例如,我需要管理引用页面以在登录后重定向用户。
这是我的路线定义:
return function (App $app) {
$app->get('/', Home::class. ':home')->setName('home');
$app->get('/login', UserAction::class. ':getLogin')->setName('login')->setAttribute('norefer',true);
$app->post('/login', UserAction::class. ':postLogin');
};
这->setAttribute('norefer',true);
是我正在寻找的,似乎它不存在。
我需要->getAttribute("norefer")
在中间件中使用此属性,以便可以存储用户访问的最后一个可参考页面:
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
{
$routeContext = RouteContext::fromRequest($request);
$route = $routeContext->getRoute();
if (!empty($route) && !$routeContext->getRoute()->getAttribute("norefer")) {
$referName = $routeContext->getRoute()->getName();
$referArgs = $routeContext->getRoute()->getArguments();
$this->session->set("referName", $referName);
$this->session->set("referArgs", $referArgs);
}
return $handler->handle($request);
}
因此,在会话中,我可以存储最后一个可参考页面,并在登录过程之后使用它来将用户重定向到他的页面。