Create a Laravel request object on the fly

I process data in one controller and want to transfer it further to another controller to avoid code duplication.

Is there a way to configure the request object that is needed in another controller storemethod? I traced the request inheritance and came up with a Symfony Request object, which has a property requestthat is actually ParameterBagthat contains a method addfor adding parameters with values ​​to it.

I tried the following, but I get nullas a result:

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

I am on Laravel 5.1 for this project.

+21
source share
4 answers

You can use replace():

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

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

dd($request->foo);

Job , , ShouldQueue, .

, !

+33

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

, $myRequest->query->add(), GET.

+16

, .

, ,

  function createUser(Illuminate\Http\Request $request){
     $request->replace(array_merge(array("new_key1"=>"new_value1","new_key_n"=>"new_value_n"), $request->all()));
}

function createUser(Illuminate\Http\Request $request){
     $request->merge(array("new_key1"=>"new_value1","new_key_n"=>"new_value_n"));
}

 function createUser(Illuminate\Http\Request $request){
     $request->request->add(array_merge(array("new_key1"=>"new_value1","new_key_n"=>"new_value_n"), $request->all()));
}

: , , . . .

0

" ", , , , .

:

use Illuminate\Http\Request;

$request = new Request([
        'name'   => 'unit test',
        'number'  => 123,
    ]);

,

$request
            ->setContainer(app())
            ->setRedirector(app(\Illuminate\Routing\Redirector::class))
            ->validateResolved();
0

Source: https://habr.com/ru/post/1658936/


All Articles