Heim > Fragen und Antworten > Hauptteil
Ich bin neu in der Verwendung von Laravel Inertia
Meine Laravel-Version ist: 9.10.1, Inertia-Version: 0.11, Vue: 3.2
Ich habe meine Klasse RefundManager
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; } }
Ich habe ein Objekt dieser Klasse in meinem Controller und habe über ihre jeweiligen Methoden id() und return() perfekten Zugriff auf $id und $refund. Aber wenn ich versuche, es an Trägheit zu übergeben, erhalte ich ein leeres Objekt. Schritte:
return Inertia::render("Ppo/Sat/RefundCases/Index", [ 'refund' => $myRefundObject ]);
In meiner Vue-Komponente habe ich prop als Objekt deklariert:
props: { 'refund': Object }
Als ich die Variable $id,$refund in „public“ geändert habe, hat es funktioniert.
Aber wenn $id und $refund privat sind, erhalte ich nur ein leeres Objekt und habe keinen Zugriff auf die öffentlichen Funktionen...
Wie kann ich es mit privaten Variablen zum Laufen bringen, indem ich über öffentliche Methoden darauf zugreife?
P粉0185484412024-03-27 00:44:54
要将PHP对象转换为JS对象,需要将其转换为json格式的字符串。
当您通过尝试调用 toJson()
向视图发送对象(如果在类中定义)(默认情况下它存在于 Model 类中)时,Laravel 会自动执行此操作
所以添加这两个函数(添加 toArray()
也不会造成伤害)
/** * Convert the object instance to an array. * * @return array */ public function toArray() { return [ 'id' => $this->id, 'refund' => $this->refund, ]; } /** * Convert the object instance to JSON. * * @param int $options * @return string * * @throws \Exception */ public function toJson($options = 0) { $json = json_encode($this->toArray(), $options); if (JSON_ERROR_NONE !== json_last_error()) { throw new \Exception(json_last_error_msg()); } return $json; }