我正在使用Laravel 5.2。我有两个请求类:ApiRequests
和GetUserDetailsRequest
。从中间件终止方法中的请求调用方法
ApiRequests
有一个方法shouldLogResponse()
它返回true
。 GetUserDetailsRequest
延伸ApiRequests
并重写shouldLogResponse()
返回false
。
另外我有一个LoggingMiddleware
类在他的terminate()
方法有以下几点:
$response_content = 'Response is not logged';
if ($request->shouldLogResponse()) {
$response_content = $response->getContent();
}
ApiLogger::request($request->getPathInfo(), $request->getContent(), $response_content);
但是它不工作,因为$request
不是GetUserDetailsRequest
类的实例(我相信)。我如何在中间件中获取特定请求的请求类?
编辑:GetUserDetailsRequest
用于控制器。
public function getUser(GetUserDetailsRequest $request) { //... }
的LoggingMiddleware
是api
组中加入$middlewareGroups
我Http\Kernel.php
。而这个api
组适用于我所有的API路由。
我认为你必须提供更多的细节,例如你在哪里以及如何注册和致电/注入你的课程。 –
你的中间件是否被定义为单例?因为终止方法正在运行一个新的实例... –
@linktoahref它是和正在按预期工作(这是我的验证逻辑)。西蒙娜卡布里诺,恐怕不是。我怎样才能做到这一点? –