web-dev-qa-db-fra.com

Response :: json () - Laravel 5.1

J'essaie de return Response::json('data', $request); cependant, je reçois une erreur:

FatalErrorException dans la ligne ProjectsController.php 74: Appel de la méthode non définie Illuminate\Http\Response :: json ()

Où se trouve la Response::json()? Qu'est-ce que je fais mal?

24
senty

utilisez la fonction d'assistance dans laravel 5.1 à la place:

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

Cela va créer une instance de \Illuminate\Routing\ResponseFactory. Voir phpDocs pour les paramètres possibles ci-dessous:

/**
* 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);
}
51
chris p bacon

Après suffisamment de recherches sur Google, j'ai trouvé la réponse du contrôleur; vous n'avez besoin que d'une barre oblique inverse, telle que return \Response::json(['success' => 'hi, atiq']);. Ou vous pouvez simplement renvoyer le tableau return array('success' => 'hi, atiq'); qui sera rendu sous la forme json dans Laravel version 5.2.

10
Atiqur

Vous devez ajouter use Response; façade en-tête de votre fichier.

Ensuite seulement, vous pourrez récupérer vos données avec

return Response::json($data);
3
RASEL RANA

À partir d'un contrôleur, vous pouvez également renvoyer un objet/un tableau et celui-ci sera envoyé sous forme de réponse JSON (y compris les en-têtes HTTP appropriés).

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

bien que Response::json() ne soit pas populaire ou récent, cela ne vous empêche pas de l'utiliser. En fait, vous n'avez besoin d'aucune façade pour l'utiliser,

au lieu de:

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

Utilisez ceci:

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

avec la barre oblique, vous êtes sûr que bon aller.

Cependant, la réponse précédente pouvait encore prêter à confusion pour certains programmeurs. Plus particulièrement les débutants qui utilisent probablement un livre ou un tutoriel plus ancien. Ou peut-être pensez-vous toujours que la façade est nécessaire. Bien sûr, vous pouvez l'utiliser. Personnellement, j’aime toujours utiliser la façade, c’est parce que lors de la construction de mon api, j’oublie d’utiliser le '\' avant la réponse.

si vous êtes comme moi, ajoutez simplement

   "use Response;"

au-dessus de votre classe ... s'étend contoller. cela devrait faire.

avec cela, vous pouvez maintenant utiliser:

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

au lieu de:

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