我想使用可终止的中间件来进行请求记录:
<?php
namespace Illuminate\Session\Middleware;
use Closure;
use App\Helpers\Logger;
class LogRequest
{
public function handle($request, Closure $next)
{
return $next($request);
}
public function terminate($request, $response)
{
Logger::log($request, $response, $additionalInfo)
}
}
如何将 $ additionalInfo 从控制器传递到中间件?
编辑: 不幸的是,在控制器中生成了附加信息。因此,我无法在路由中间件函数中对其进行硬编码
答案 0 :(得分:1)
您是否尝试添加 kernel.php :
protected $routeMiddleware = [
......
'LogRequest'=> \App\Http\Middleware\LogRequest::class
];
LogRequestMiddleware: 中的
public function handle($request, Closure $next, $additionalInfo)
{
//here you have $additionalInfo
$request->attributes->add(["info" => $additionalInfo]);
return $next($request);
}
public function terminate($request, $response)
{
dd( $request->attributes);
}
在控制器中:
public function __construct()
{
$additionalInfo = "test"
$this->middleware("LogRequest:$additionalInfo");
}
答案 1 :(得分:1)
我认为您可以在处理请求时在控制器中为请求对象设置一些属性,请求对象本身将作为第一个参数传递给终止($ request,$ response)。然后,您可以提取您在控制器中设置的任何内容并使用它。
答案 2 :(得分:0)
编辑:你或许能够做到这一点
<强>控制器强>
$request->attributes->add(['additionalInfo' => 'additionalInfoValue']);
<强>中间件强>
public function terminate($request, $response)
{
$additionalInfo = $request->attributes('additionalInfo' => $additionalInfo);
Logger::log($request, $response, $additionalInfo)
}