Saya mengalami kesalahan ini:
htmlspecialchars() expects parameter 1 to be string, object given
Saya menggunakan pengontrol:
$data = '{"pr":{"code":"1"},"ac":[[{"icon":"web","action":"link","url":"asd"}]]}'
$newData = json_decode($data);
Dan saya mengirimkannya ke view sebagai array: 'data' => $newData Dan ketika saya mencoba menggunakan $data ke dalam tampilan, itu memberi saya kesalahan itu
Sudah mencoba menggunakan $data->ac ATAU $data['ac'] tetapi masih sama... Mohon bantuannya?
Ketika Anda menggunakan blade echo {{ $data }}
, maka secara otomatis akan keluar dari output. Ia hanya bisa escape string. Dalam data Anda $data->ac
adalah sebuah larik dan $data
adalah sebuah objek, yang keduanya tidak dapat di-echo seperti apa adanya. Anda perlu lebih spesifik bagaimana data harus dikeluarkan. Seperti apa sebenarnya yang terlihat sepenuhnya tergantung pada apa yang ingin Anda capai. Sebagai contoh untuk menampilkan tautan, Anda perlu melakukan {{{ $data->ac[0][0]['url'] }}
(tidak yakin mengapa Anda memiliki dua array bersarang tetapi saya hanya mengikuti struktur data Anda).
@foreach($data->ac['0'] as $link)
<a href="{{ $link['url'] }}">This is a link</a>
@endforeach
jika tujuan Anda adalah mengirim array penuh dari html ke controller, dapat menggunakan ini:
dari blade.php:
<input type="hidden" name="quotation" value="{{ json_encode($quotation,TRUE)}}">
dalam pengontrol
public function Get(Request $req) {
$quotation = array('quotation' => json_decode($req->quotation));
//or
return view('quotation')->with('quotation',json_decode($req->quotation))
}
Anda bisa menggunakan serialize
<input type="hidden" name="quotation[]" value="{{serialize($quotation)}}">
Tetapi cara terbaik dalam hal ini gunakan metode json_encode
di blade Anda dan json_decode
di controller.