Saya baru menggunakan Laravel Inertia
Versi laravel saya ialah: 9.10.1, versi Inersia: 0.11, Vue: 3.2
Saya mempunyai RefundManager kelas saya
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; } }Saya mempunyai objek kelas ini dalam pengawal saya dan saya mempunyai akses sempurna kepada $id dan $refund melalui kaedah masing-masing id() dan return(). Tetapi apabila saya cuba menghantarnya kepada inersia, saya menerima objek kosong. Langkah-langkah:
return Inertia::render("Ppo/Sat/RefundCases/Index", [ 'refund' => $myRefundObject ]);Dalam komponen vue saya, saya telah mengisytiharkan prop sebagai objek:
props: { 'refund': Object }Apabila saya menukar pembolehubah $id,$refund kepada awam ia berjaya. Tetapi apabila $id dan $refund adalah peribadi, saya hanya menerima objek kosong dan tidak mempunyai akses kepada fungsi awam... Bagaimanakah saya boleh menjadikannya berfungsi dengan pembolehubah persendirian dengan mengaksesnya melalui kaedah awam?
Untuk menukar objek PHP kepada objek JS, anda perlu menukarnya kepada rentetan format json.
Laravel melakukan ini secara automatik apabila anda menghantar objek (jika ditakrifkan dalam kelas) ke paparan dengan cuba memanggil
toJson()
(secara lalai ia wujud dalam kelas Model)Jadi tambah dua fungsi ini (menambah
toArray()
tidak menyakitkan juga)