这是我的代码
$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);
问题是,当它进入路径时,输入不会形成数组 我如何从数组中获取输入
答案 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
]
]