我正在尝试实现一个从API读取数据的中间件,稍后将在控制器上使用它。怎么办呢? 我已经制作了一个简单的中间件,我有
public function __invoke(ServerRequestInterface $request, ResponseInterface $response, $next)
{
$dataFromApi = curl_action....
$request->dataFromApi = $dataFromApi;
return next($request, $response);
}
稍后在控制器上我希望使用
访问这些数据public function display(...$path)
{
$this->set('dataFromApi', $this->request->dataFromAPI);
}
答案 0 :(得分:1)
查看\Psr\Http\Message\ServerRequestInterface
API,您可以使用ServerRequestInterface::withAttribute()
将自定义数据存储在属性中:
// ...
// request objects are immutable
$request = $request->withAttribute('dataFromApi', $dataFromApi);
// ...
return next($request, $response);
并通过ServerRequestInterface::getAttribute()
相应地读入您的控制器:
$this->set('dataFromApi', $this->request->getAttribute('dataFromApi'));
另见