1
votes

PHP Laravel vue json

J'ai quelques problèmes avec l'affichage de json d'un contrôleur à l'autre. Si je ne renvoie que la réponse json que j'ai.

Cannot use object of type Illuminate\Http\JsonResponse as array

Comme d'habitude.

Mais quand j'essaye de l'implémenter sur la lame, cela ne fonctionne pas. Je le fais comme ça dans le contrôleur.

{{ $title }}

et ceci dans la vue

$data1 = $getProduct->index();

        $data = array(
            'title'=> $data1['title'],
            'Description'=>'This is New Application',
            );

et une erreur comme p >

{"result":true,"title":"Cable"} 


6 commentaires

Pouvez-vous montrer plus du contrôleur? Que renvoie getIndex () ? Il semble qu'il renvoie un JsonResponse au lieu de simplement le JSON.


Oui c'est return ..... return response () -> json (['result' => true, 'title' => $ title, 'orders' => $ orders, // 'description' => $ description , 'var' => $ var, 'images' => $ images,], 200);


Voilà votre problème, vous ne devriez pas utiliser response () -> json () si vous voulez retourner une lame. à la place, renvoie la vue ('view_name', ['result' => true, ...]) . Puisque vous appelez cette méthode à partir d'une autre méthode, il semble que vous n'utilisiez pas les contrôleurs et je ne peux pas vous conseiller sur la façon de le réparer sans plus d'informations. Que contient $ getProduct ? Est-ce un autre contrôleur?


Je renvoie des informations d'un contrôleur à un autre. C'est pourquoi j'ai essayé de retourner json, ce retour est $ getProduct-> index () , maintenant quand je montre seulement getProduct je peux voir la réponse json, quand je le décode c'est NULL, quand je l'encode je ont un retour comme {headers: {}, original: {"title": "Cable"}}


lorsque vous faites response () -> json () vous ne renvoyez pas un objet JSON, vous renvoyez un objet Response qui contient JSON. Ce sont deux choses très différentes.


Est-ce résolu? Veuillez marquer la réponse qui a aidé comme acceptée.


4 Réponses :


-1
votes

Vous pouvez simplement utiliser json_decode () pour convertir un objet json en un tableau php

$data = json_decode($data1);
echo $data->title; // Cable


4 commentaires

Quand je fais cela, c'est nul.


pouvez-vous faire un print_r (getProduct-> index ()); et coller le résultat


Illuminate \ Http \ JsonResponse Object ([data: protected] => {"result": true, "title": "Cable"} ....


Essayer d'obtenir la propriété 'title' d'un non-objet



0
votes

Il semble que vous essayez d'utiliser une seule fonction pour renvoyer des données pour plusieurs points de terminaison (un json et une vue). C'est bien sauf que la fonction partagée doit renvoyer un tableau au lieu d'un JsonResponse. La classe JsonResponse n'est pas un objet JSON, c'est un objet Response qui contient les données en plus de toutes les données de réponse telles que les en-têtes, les cookies, etc.

Mettez à jour index () pour renvoyer un tableau. D'après vos commentaires, il semble que cela soit contenu dans un contrôleur, mais il est utilisé dans un contrôleur différent. Cela devrait vivre dans sa propre classe qui est ensuite appelée depuis n'importe quel contrôleur qui en a besoin.

public function bladeEndpoint()
{
    $data1 = $getProduct->index();

     $data = array(
         'title'=> $data1['title'],
         'Description'=>'This is New Application',
     );

     return view('view_name', $data);
}

Ensuite, dans votre route json, faites:

public function jsonEndpoint()
{
    return response()->json($getProduct()->index());
}


0 commentaires

0
votes

La classe Illuminate \ Http \ JsonResponse indique que vos données renvoyées ne sont pas un tableau mais un objet.

Sur cette base, vous devriez faire quelque chose comme ceci:

$data1 = $getProduct->index();

// As $data1 is Illuminate\Http\JsonResponse
// you need to get the data in object format (not array)

$data = array(
  'title'=> $data->title,
  'Description'=>'This is New Application',
);

Cela devrait le faire.

Remarque: si $ data1 est nul, alors votre json est mal formaté.

Voir la documentation officielle d'Illuminate \ Http \ JsonResponse a >


0 commentaires

0
votes

Essayez d'utiliser dd (votre_objet) ou dump (votre_objet) pour voir exactement ce qu'il y a à l'intérieur de votre objet avant de l'envoyer comme dans la réponse


0 commentaires