我正在测试我的API,所以我想创建请求,但我无法让params工作。我所做的只是添加一个参数,Hello指向World,但当我尝试获取该参数时,Hello返回NULL。缺少什么?这是代码:
//This is routes.php:
<?php
Route::get('/testapi', 'TestController@testapi');
Route::get('/json/locations', 'APILocationController@getForUser');
?>
//This is TestController.php:
<?php
class TestController extends 'BaseController {
public function testapi() {
echo 'Create the request';
echo '<br>';
$request = Request::create('/json/locations', 'GET', array('Hello' => 'World'));
return Route::dispatch($request)->getContent();
}
}
?>
//This is APILocationController.php:
<?php
class APILocationController extends 'BaseController {
public function getForUser() {
echo var_dump(Request::get('Hello'));
echo '<br>';
return Response::json(array('message' => 'Index all locations based on User'), 200);
}
}
?>
//This is the output:
Create the request
NULL
{"message":"Index all locations based on User"}
//这怎么是"NULL"?
添加一个"Request::replace($Request->input());"解决了我的问题,我不知道为什么:
$request = Request::create('/json/locations', 'GET', array('Hello' => 'World'));
Request::replace($request->input());
return Route::dispatch($request)->getContent();
不管怎样,它现在起作用了。忘记在此处更新问题。
要在Laravel中获取get或POST参数,应该使用Input。
<?php
class APILocationController extends 'BaseController {
public function getForUser() {
echo var_dump(Input::get('Hello'));
echo '<br>';
return Response::json(array('message' => 'Index all locations based on User'), 200);
}
}