Подтвердить что ты не робот

Ответ:: json() - Laravel 5.1

Я пытаюсь return Response::json('data', $request); однако, я получаю сообщение об ошибке:

FatalErrorException в строке ProjectsController.php 74: Вызов метода undefined Illuminate\Http\Response:: json()

Где находится Response::json()? Что я делаю неправильно?

4b9b3361

Ответ 1

используйте вспомогательную функцию в laravel 5.1 вместо:

return response()->json(['name' => 'Abigail', 'state' => 'CA']);

Это создаст экземпляр \Illuminate\Routing\ResponseFactory. См. PhpDocs для возможных параметров ниже:

/**
* Return a new JSON response from the application.
*
* @param string|array $data
* @param int $status
* @param array $headers
* @param int $options
* @return \Symfony\Component\HttpFoundation\Response 
* @static 
*/
public static function json($data = array(), $status = 200, $headers = array(), $options = 0){

    return \Illuminate\Routing\ResponseFactory::json($data, $status, $headers, $options);
}

Ответ 2

После достаточного поиска в Google, я нашел ответ от контроллера, вам нужно только обратную косую черту, например return \Response::json(['success' => 'hi, atiq']);. Или вы можете просто вернуть массив return array('success' => 'hi, atiq');, который будет отображаться как json в версии Laravel версии 5.2.

Ответ 3

Вам нужно добавить use Response; Фасад в заголовке в вашем файле.

Только тогда вы можете успешно восстановить ваши данные с

return Response::json($data);

Ответ 4

С контроллера вы также можете вернуть объект/массив и он будет отправлен как ответ JSON (включая правильные заголовки HTTP).

public function show($id)
{
    return Customer::find($id);
}

Ответ 5

хотя Response::json() в последнее время не становится популярным, это не мешает вам и Мне использовать его. На самом деле вам не нужен какой-либо фасад, чтобы использовать его,

вместо:

$response = Response::json($messages, 200);

Используйте это:

$response = \Response::json($messages, 200);

с косой чертой, ты уверен, что хорошо идти.

Ответ 6

Тем не менее, предыдущий ответ все еще может сбивать с толку некоторых программистов. Особенно начинающим, которые, скорее всего, используют более старую книгу или учебник. Или, возможно, вы все еще чувствуете, что фасад необходим. Конечно, вы можете использовать это. Я, например, все еще люблю использовать фасад, потому что иногда, создавая API, я забываю использовать "\" перед "Ответом".

если ты похож на меня, просто добавьте

   "use Response;"

выше вашего класса... расширяет контроллер. это должно сделать.

теперь вы можете использовать:

$response = Response::json($posts, 200);

вместо:

$response = \Response::json($posts, 200);