我正在使用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它是和正在按預期工作(這是我的驗證邏輯)。西蒙娜卡布裏諾,恐怕不是。我怎樣才能做到這一點? –