[laravel] Laravel에서 요청 매개 변수의 값을 변경하는 방법

내 요청 매개 변수의 값을 다음과 같이 변경해야합니다.

$request->name = "My Value!";

이 코드를 사용하지만 작동하지 않습니다.

$request->offsetSet('img', $img);



답변

사용 merge():

$request->merge([
    'user_id' => $modified_user_id_here,
]);

단순한! 전체 $request->all()를 다른 변수 로 전송할 필요가 없습니다 .


답변

하려고 노력하다:

$requestData = $request->all();
$requestData['img'] = $img;

이를 수행하는 또 다른 방법 :

$request->merge(['img' => $img]);

@JoelHinz에게 감사드립니다.

중첩 된 데이터를 추가하거나 덮어 쓰려면 :

$data['some']['thing'] = 'value';
$request->merge($data);

Request $request객체를 주입하지 않으면 대신 전역 request()도우미 또는 \Request::파사드를 사용할 수 있습니다.$request


답변

요청을 사용자 정의해야하는 경우

$data = $request->all();

필드 이름과 값을 전달할 수 있습니다.

$data['product_ref_code'] = 1650;

마지막으로 새로운 요청을 전달

$last = Product::create($data);


답변

요청에서 속성을 업데이트해야하는 경우 Laravel에서 사용하는 Request 클래스의 replace 메서드를 사용하는 것이 좋습니다.

$request->replace(['property to update' => $newValue]);


답변

여기에 훌륭한 답변이 있지만 JSON 요청의 값을 대체해야했습니다. 코드를 조금 파헤친 후 다음 코드를 생각해 냈습니다. 내가 멍청한 짓을하고 있는지 알려주세요.

$json = $request->json()->all();
$json['field'] = 'new value';
$request->json()->replace($json);


답변

유효성 검사를 위해 사용자 지정 요청을 사용하거나 유효성 검사를 위해 데이터를 바꾸거나 기본 데이터 (확인란 또는 기타)를 설정하려면 override 메소드를 사용하십시오 prepareForValidation().

namespace App\Http\Requests\Admin\Category;

class CategoryRequest extends AbstractRequest
{
    protected function prepareForValidation()
    {
        if ( ! $this->get('url')) {
            $this->merge([
                'url' => $this->get('name'),
            ]);
        }
        $this->merge([
            'url'    => \Str::slug($this->get('url')),
            'active' => (int)$this->get('active'),
        ]);
    }
}

이 정보가 누군가에게 도움이되기를 바랍니다.


답변

그것은 나를 위해 일합니다

$request = new Request();
$request->headers->set('content-type', 'application/json');
$request->initialize(['yourParam' => 2]);

출력 확인

$queryParams = $request->query();
dd($queryParams['yourParam']); // 2