Php Laravel有没有一种方法可以向请求数组添加值

Php Laravel有没有一种方法可以向请求数组添加值,php,laravel,Php,Laravel,我在Laravel中遇到了这样一种情况:在调用雄辩的函数之前,调用带有请求参数的store()或update()方法来为请求添加一些附加值,有没有办法 function store(Request $request) { // some additional logic or checking User::create($request->all()); } 通常,您不想向请求对象添加任何内容,最好使用collection和helper: 或者你可以: 但是,如果确实要向请求对

我在Laravel中遇到了这样一种情况:在调用雄辩的函数之前,调用带有请求参数的store()或update()方法来为请求添加一些附加值,有没有办法

function store(Request $request) 
{
  // some additional logic or checking
  User::create($request->all());
}

通常,您不想向请求对象添加任何内容,最好使用collection和helper:

或者你可以:

但是,如果确实要向请求对象添加内容,请执行以下操作:

$request->request->add(['variable' => 'value']); //add request

参考
Alexey Mezenin
回答:

在使用他的答案时,我必须直接向请求对象添加一些内容,并使用:

$request->request->add(['variable', 'value']);
使用此方法,它添加了两个变量:

$request[0] = 'variable', $request[1] = 'value'
如果你是像我这样的新手,你需要一个助理数组,正确的方法是

$request->request->add(['variable' => 'value']);
希望我能为你节省一些时间


PS:谢谢你
@Alexey
,你的回答真的帮了我的忙

要在当前
请求
对象中添加一个新参数,你可以:

$newParam = "paramvalue";
$request->request->add(['newParam' => $newParam]);
添加新参数后,您可以通过以下方式在请求对象中看到此新添加的参数:

dd($request);//prints the contents of the Request object

我使用此代码向请求中添加了一些内容

$req->query->add(['key'=>'variable']);
$req->request->add(['key'=>'variable']);

在laravel 5.6中,我们可以在中间件之间传递参数,例如:

第一中间件

public function handle($request, Closure $next, ...$params)
{
    //some code
    return $next($request->merge(['key' => 'value']));
}
public function handle($request, Closure $next, ...$params)
{
    //some code
    dd($request->all());
}
第二中间件

public function handle($request, Closure $next, ...$params)
{
    //some code
    return $next($request->merge(['key' => 'value']));
}
public function handle($request, Closure $next, ...$params)
{
    //some code
    dd($request->all());
}

您也可以使用下面的代码

$request->request->set(键、值)。


更适合我。

我在Laravel 5.2中尝试了
$request->merge($array)
函数,它工作得非常好

$request->offsetSet(key, value);
例如:

$request->merge(["key"=>"value"]);

您可以使用
$request['key']='value'
直接访问请求数组

关于这个问题说得够多了,但我忍不住要补充我自己的答案。我认为最简单的方法是

request()->merge([ 'foo' => 'bar' ]);

根据我的观察

$request->request->add(['variable'=>'value'])
将(主要)在POST、PUT和DELETE方法中工作,因为传递了一些值,其中一个是
\u token
。就像下面的例子

<form action="{{ route('process', $id) }}" method="POST">
    @csrf
</form>

public function process(Request $request, $id){
    $request->request->add(['id' => $id]);
}
或者您可以使用
合并
。这实际上比
$request->request->add(['variable'=>'value'])要好因为可以初始化并添加适用于所有方法(GET、POST、PUT、DELETE)的请求值


标签:laravel5.8.11

我使用和研究过的最好的标签是
$request->merge([])
(检查我的代码):


选中索引函数中的第3行。

您可以通过执行以下操作将参数添加到来自中间件的请求中:

public function handle($request, Closure $next)
{
    $request->route()->setParameter('foo', 'bar');
    return $next($request);
}

您可以使用laravel helper和request()魔术方法

request()->request->add(['variable1'=>'value1','variable2'=>'value2']);

你想做什么样的治疗?是否要将键值添加到
$request->all()
数组?是的,我需要添加键值您不能使用
数组\u add()
帮助程序吗<代码>$array=array\u add($request->all(),'new\u key',$value):如果这不是您想要的东西,您能为您的问题提供更多信息吗?$request是php对象,据我所知,如果您想在控制器中添加一些功能,将请求对象转换为数组,然后添加任何您想要的内容。现在,我已将代码更改为函数存储(request$request){//一些附加逻辑或检查$plan=123;//一些逻辑来决定用户的计划$request->request->add(['plan'=>$plan]);user::create($request->all());}这不起作用,因为$request->all()是数组而不是集合。我猜它必须是$request->request->add(['variable'=>'value'])$请求->请求->添加。。。我收到了错误消息“Undefined variable:request”,但我收到了“use Illumb\Http\request;”为什么会收到错误消息?我是否需要$request=collect();第一?$resquest是一个集合还是数组?那就是
$request->merge()
方法FTW!谢谢。至少在Laravel 5.6中是这样做的!很好的回答$request->request->add。。。我收到了错误消息“Undefined variable:request”,但我收到了“use Illumb\Http\request;”为什么会收到错误消息?@robspin我想已经很晚了,但您可能没有在函数中插入请求,例如:function(request$request)对于那些正在寻找为什么您的值没有插入数据库的人,因为我没有在我的
Model
类中将数据库的值声明为:
protected$filleble=['slug']这是完美的解决方案这对我来说是正确的答案
public function process(Request $request, $id){
    $request->merge(['id' => $id]);
}
public function index(Request $request) {
    not_permissions_redirect(have_premission(2));
    $filters = (!empty($request->all())) ? true : false;
    $request->merge(['type' => 'admin']);
    $users = $this->service->getAllUsers($request->all());
    $roles = $this->roles->getAllAdminRoles();
    return view('users.list', compact(['users', 'roles', 'filters']));
}
public function handle($request, Closure $next)
{
    $request->route()->setParameter('foo', 'bar');
    return $next($request);
}
request()->request->add(['variable1'=>'value1','variable2'=>'value2']);