[php] Laravel은 요청 배열에 값을 추가하는 방법이 있습니다.

Eloquent 함수를 호출하기 전에 요청에 추가 값을 추가하기 위해 Request 매개 변수를 사용하여 store () 또는 update () 메서드를 호출하는 동안 Laravel에서 상황이 발생했습니다.

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



답변

일반적으로 Request 객체에 아무것도 추가하지 않으려는 경우 수집 및 put()도우미 를 사용하는 것이 좋습니다 .

function store(Request $request)
{
    // some additional logic or checking
    User::create(array_merge($request->all(), ['index' => 'value']));
}

또는 배열을 통합 할 수 있습니다 .

User::create($request->all() + ['index' => 'value']);

그러나 정말로 Request 객체에 무언가를 추가하고 싶다면 다음과 같이하십시오.

$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']);

시간을 절약했으면 좋겠어

추신 : 감사합니다 @Alexey, 당신은 정말로 당신의 대답으로 나를 도왔습니다


답변

$request->merge($array)Laravel 5.2에서 기능을 시도했는데 완벽하게 작동합니다.

예:

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


답변

이 주제에 대해 충분히 말했지만 내 대답을 추가하는 것을 거부 할 수 없었습니다. 가장 간단한 접근 방식은

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


답변

laravel 5.6에서는 미들웨어간에 매개 변수를 전달할 수 있습니다. 예를 들면 다음과 같습니다.

FirstMiddleware

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

SecondMiddleware

public function handle($request, Closure $next, ...$params)
{
    //some code
    dd($request->all());
}


답변

아래 코드를 사용할 수도 있습니다.

$request->request->set(key, value).

나에게 더 잘 맞습니다.


답변

ex : newParam에 대한 새 매개 변수를 현재 RequestObject에 추가하려면 다음을 수행 할 수 있습니다.

$newParam = "paramvalue";
$request->request->add(['newParam' => $newParam]);

새 매개 변수를 추가 한 후 다음과 같이 요청 객체에 새로 추가 된 매개 변수를 볼 수 있습니다.

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