laravel使用Request :: create和Route :: dispatch($ request);

时间:2015-09-29 15:24:32

标签: php laravel laravel-4

这是我的代码

$request = Request::create('games/result', 'POST', array(
                 "name"     => Session::get('name'),
                 "score"    => Session::get('score'),
                 "Level"    => Session::get('Level'),
                 "accuracy" => Session::get('accuracy'), 
                 "time"     => Session::get('time'),
                 "bouns"    => Session::get('bouns')
            ));
            var_dump($request->input());
            Request::replace($request->input());
             Route::dispatch($request);

问题是,当它进入路径时,输入不会形成数组 我如何从数组中获取输入

3 个答案:

答案 0 :(得分:1)

不要使用Request :: replace方法。

$request = Request::create('games/result', 'POST', array(
             "name"     => Session::get('name'),
             "score"    => Session::get('score'),
             "Level"    => Session::get('Level'),
             "accuracy" => Session::get('accuracy'), 
             "time"     => Session::get('time'),
             "bouns"    => Session::get('bouns')
        ));           
$response = Route::dispatch($request);
return $response;

答案 1 :(得分:0)

我知道这个问题有超过1年的时间,但是对于那些到达这里寻找Laravel 4.2类似问题答案的人来说,在创建请求之前添加:Input::setMethod('post');并在创建请求之后:{{ 1}}第一个强制使用POST方法,第二个用当前请求替换为使用 $ request 变量创建或实例化的新请求。我认为这是Laravel版本中的一个错误。

答案 2 :(得分:0)

这适用于Laravel 5.4-也许也适用于其他

在我的Web控制器中:

public function testground(Request $request)
{   

    $new_request = Request::create(
        'api/customsandbox', 
        'POST', 
        [$request->all(), ['param' => 2]]
    );

    $response = Route::dispatch($new_request);
    dd($response);
}

通过这种方式,我不需要在之后设置方法类型(GET,POST等)。我可以在Request :: create()中设置它。

我的api路由如下所示(已添加版本控制文件夹):

Route::post('customsandbox', 'Api\V1\SandboxController@index');

最后,我的Api的SandboxController索引方法如下:

public function index(Request $request)
{
    return response()->json($request->all());
}

这使数组变平并给出了以下响应:

array:2 [
  0 => array:1 [
    "param" => "1"
  ],
  1 => array:1 [
    "param" => 2
  ]
]