Je suis nouveau dans l'utilisation de Laravel Inertia
Ma version de Laravel est : 9.10.1, version Inertia : 0.11, Vue : 3.2
J'ai mon RefundManager de classe
class RefundManager { private int $id; private string $refund; public function __construct( int $id, string $refund, ) { $this->id = $id; $this->refund = $refund; } public function id(): int { return $this->id; } public function refund(): string { return $this->refund; } }
J'ai un objet de cette classe dans mon contrôleur et j'ai un accès parfait à $id et $refund via leurs méthodes respectives id() et return(). Mais lorsque j'essaye de le passer à l'inertie, je reçois un objet vide. Étapes :
return Inertia::render("Ppo/Sat/RefundCases/Index", [ 'refund' => $myRefundObject ]);
Dans mon composant vue, j'ai déclaré prop comme objet :
props: { 'refund': Object }
Lorsque j'ai changé la variable $id,$refund en public, cela a fonctionné.
Mais lorsque $id et $refund sont privés, je ne reçois qu'un objet vide et n'ai pas accès aux fonctions publiques...
Comment puis-je le faire fonctionner avec des variables privées en y accédant via des méthodes publiques ?
Pour convertir un objet PHP en objet JS, vous devez le convertir en chaîne au format json.
Laravel le fait automatiquement lorsque vous envoyez un objet (s'il est défini dans une classe) à la vue en essayant d'appeler
toJson()
(par défaut il existe dans la classe Model)Alors ajoutez ces deux fonctions (ajouter
toArray()
ne fait pas de mal non plus)