laravel在中间件内生成参数并且传递到控制器2种姿势
姿势1
使用
r
e
q
u
e
s
t
−
>
a
t
t
r
i
b
u
t
e
s
−
>
a
d
d
(
request->attributes->add(
request−>attributes−>add(arr)方法
注册中间件这部分就不说了 主要说用法
class MidParams //中间件
{
public function handle($request, Closure $next)
{
$param = ['参数名'=>'参数值'];
$request->attributes->add($param);//添加参数
return $next($request);//进行下一步(即传递给控制器)
}
}
//控制器里操作
public function testMidFunc(Request $request) {
$input_params = $request->input();//获取参数
$add_params = $request->get('参数名');//中间件产生的参数
}
}
注意:$request->attributes->add这种方法 input()取不到值 只能用get(‘xxx’)取到值
姿势2
使用 r e q u e s t − > m e r g e ( request->merge( request−>merge(arr)方法
class MidParams //中间件
{
public function handle($request, Closure $next)
{
$param = ['参数名'=>'参数值'];
$request->merge($param);//合并参数
return $next($request);
}
}
//控制器
public function testMidFunc(Request $request) {
$all_params = $request->input();//获取参数(所有参数)
}
}
merge后$request->input()能获取到所有的参数