2016-10-26 3 views
3

한 컨트롤러에서 데이터를 처리하는 중이고 중복 된 코드를 피하기 위해 다른 컨트롤러로 데이터를 전달하려고합니다.즉석에서 Laravel Request 개체 만들기

다른 컨트롤러의 store -method에 필요한 요청 개체를 설정하는 방법이 있습니까? 요청 상속을 추적 한 후 request 속성을 가진 Symfony의 요청 객체 인 사실 ParameterBag에 값이있는 매개 변수를 추가하는 add 메서드가 들어 있습니다.

내가 해봤 다음 그러나 나는 결과로 null을 받고 있어요 :

$myRequest = new Request(); 
$myRequest->request->add(['foo' => 'bar']); 
var_dump($myRequest->foo); 

나는이 프로젝트에 Laravel 5.1입니다.

답변

8

당신은 replace()를 사용할 수 있습니다

$request = new \Illuminate\Http\Request(); 

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

dd($request->foo); 

또는이 두 번째 컨트롤러에서 벌어지고있는 무엇에 대한 Job를 만들고 동 기적으로 실행되도록하기 위해 ShouldQueue 인터페이스를 제거하는 더 의미가있다.

희망이 도움이됩니다.

+0

감사합니다. 시간 제한으로 인해 약간의 중복 코드로 해결했습니다 (다른 것들은 외부 컨트롤러에서도 발생했습니다). 나는 이것을 또 한번 기억할 것이다! – Ben

+0

요청 방법을'POST '로 어떻게 바꿀 수 있는지 말해 줄 수 있습니까? –

1

$myRequest = new Request();과 함께 요청 개체를 생성하면 method = 'GET'이라는 개체가 생성됩니다. 요청 방법을 $myRequest->getMethod()으로 확인할 수 있습니다. request 속성에 POST 요청에 대한 데이터가 저장되어 있으므로 기본적으로 $myRequest->request->add()을 사용할 수 없습니다. 먼저 POST로 요청의 방법을 설정해야합니다 :

$myRequest = new \Illuminate\Http\Request(); 
$myRequest->setMethod('POST'); 
$myRequest->request->add(['foo' => 'bar']); 
dd($request->foo); 

당신은 GET 요청에 데이터를 추가 할 수 있습니다 $myRequest->query->add()을 사용 그렇고.

관련 문제