私は、ブレードテンプレートのシリアル化された配列からプロパティを取得する最適な方法を理解しようとしています。Laravel:私のビューにjson_decodeを使用するにはどうすればいいですか?
MyController.php
$cart = Cart::findOrFail($id);
...
return view('view', ['cart' => $cart]);
したがって、この場合には$cart
は、ビューに渡さなっているその中の多くの項目(オブジェクト)を持っています。
私はこの方法で物事にアクセスすることができます。このビューでcart.blade.php
...
@each('show', $cart->items()->get(), 'item')
...
:
show.blade.php
<p>$item->name</p>
<p>$item->color</p>
...
しかし、また$item
スキュー、ウェイト、数量などを含むシリアル化された属性を持っています。
// $item->serialized_item = {"id":123,"quantity":5,"...} (string)
だから私のような何かをする必要が私のshow.blade.php
ビューで:
json_decode($item->serialized_item)
を今、私はちょうどきれいに物事を保つために別のビューをインポートしていますが、私はこれがベストだとは思いません方法。
<?php
$foo = json_decode($item->serialized_item, true);
?>
<p>{{$foo['quantity']}}</p> // 5
detail.blade.php
cart.blade.php
...
@include('detail', ['attributes' => item->serialized_item])
この方法では動作しますが、それはハックのように思えます。
も、 $ fooは実際には大きなオブジェクトであり、小さなオブジェクトがたくさんあります。これらのオブジェクト内には、シリアライズされた属性があります。したがって、 'item'内の' foreach(foo as item) 'のようなものが直列化された属性です。私はそれが理にかなったことを願う私はショッピングカートを使って作業していますので、 '$ foo'を自分のカートと考えてください。 – Damon
各ファイルのコードロジックを編集し、より良い考えを与えることができますか?いくつかの偽のデータが入っている欠落している行。 –
確かに!あなたのお手伝いをしていただきありがとうございます。 – Damon