2014-11-05 2 views
2

Я тестирую свой API, поэтому хочу создавать запросы, но я не могу заставить параметры работать. Все, что я делаю, это добавить параметр с Hello, указывающим на World, но Hello возвращает NULL, когда я пытаюсь получить этот параметр. Чего не хватает? Вот код:Laravel: Не могу добавить параметры для запроса

//This is routes.php: 
<?php 
Route::get('/testapi', '[email protected]'); 
Route::get('/json/locations', '[email protected]'); 
?> 


//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"?

ответ

3

Добавление «Request :: replace ($ request-> input());" решила мою проблему, я понятия не имею, почему:

$request = Request::create('/json/locations', 'GET', array('Hello' => 'World')); 
    Request::replace($request->input()); 
    return Route::dispatch($request)->getContent(); 

В любом случае, теперь это работает. Забыл обновить вопрос здесь.

-1

Чтобы получить параметры GET или POST в Laravel, вы должны использовать 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); 
    } 
} 
+0

Все еще возвращает NULL:/ – Rkey

+1

Как вы это проверяете? – Jerodev

+0

С таким же кодом, который я только что вставил, я просто заменил Request :: get with Input :: get – Rkey

-1

Если это пароль, вы должны добавить его в свой маршрут. Попробуйте следующее:

Маршрут :: get ('/ json/locations/{hello}', 'APILocationController @ getForUser');

Я не уверен, чувствителен ли он. Вы должны его протестировать

+0

Насколько я знаю, мне не нужно было этого делать, вы должны иметь возможность привязывать переменные к самому запросу. – Rkey

+0

Это не параметр GET, это раздел URI и не имеет ничего общего с параметрами GET. Они будут проходить независимо от маршрутов. – ollieread