Laravel – htmlspecialchars() se așteaptă ca parametrul 1 să fie un șir de caractere, obiect dat (Programare, Php, Laravel)

Kiddo a intrebat.

Mă duc această eroare:

htmlspecialchars() expects parameter 1 to be string, object given

Folosesc în controller:

$data = '{"pr":{"code":"1"},"ac":[[{"icon":"web","action":"link","url":"asd"}]]}'
$newData = json_decode($data);

Și îl trimit la vizualizare ca matrice: ‘data’ => $newDataȘi când încerc să folosesc $data în vizualizare, îmi dă această eroare

Am încercat deja să folosesc $data->ac SAU $data[‘ac’] dar tot la fel…Un ajutor, vă rog?

Comentarii

  • Puteți adăuga codul vizualizării? –  > Por Hammerbot.
  • {{ $data }} => Asta e tot. –  > Por Kiddo.
  • json_decode returnează în mod implicit un obiect. use $newData = json_decode($data,TRUE); pentru o matrice – user6763587
  • htmlspecialchars() se așteaptă ca parametrul 1 să fie un șir de caractere, array dat –  > Por Kiddo.
5 răspunsuri
jfadich

Atunci când utilizați un ecou de lamă {{ $data }} acesta va scăpa automat ieșirea. Poate scăpa doar șiruri de caractere. În datele dvs. $data->ac este o matrice și $data este un obiect, niciunul dintre acestea nu poate fi transmis ca atare. Trebuie să precizați mai clar cum trebuie să fie afișate datele. Cum arată exact acest lucru depinde în întregime de ceea ce încercați să realizați. De exemplu, pentru a afișa linkul, ar trebui să faceți ceea ce urmează {{ $data->ac[0][0]['url'] }} (nu sunt sigur de ce aveți două array-uri imbricate, dar urmăresc doar structura datelor).

@foreach($data->ac['0'] as $link)
    <a href="{{ $link['url'] }}">This is a link</a>
@endforeach

Comentarii

  • A funcționat de minune. Vă mulțumesc. –  > Por Kiddo.
  • Am avut acest lucru deoarece $errors->get() returna o matrice. Trecerea la $errors->first() fixat acest lucru. –  > Por brad.
Hernan Humaña

dacă intenția dvs. este de a trimite matricea completă de la html la controler, puteți utiliza acest lucru:

din blade.php:

 <input type="hidden" name="quotation" value="{{ json_encode($quotation,TRUE)}}"> 

în controller

    public function Get(Request $req) {

    $quotation = array('quotation' => json_decode($req->quotation));

    //or

    return view('quotation')->with('quotation',json_decode($req->quotation))


}

Ehab Elzeny

Ați putea folosi serialize

<input type="hidden" name="quotation[]" value="{{serialize($quotation)}}">

Dar cea mai bună metodă în acest caz este să folosiți json_encode în blade și json_decode în controler.

Sajjad Aljileezi

Acesta este modul corect de accesare a datelor în Laravel :

@foreach($data-> ac as $link) 

   {{$link->url}}

@endforeach

M.Idrish

Laravel – htmlspecialchars() se așteaptă ca parametrul 1 să fie un șir de caractere, obiect dat.

Mulțumiri din urmă…………………….

atunci când trimiteți sau obțineți array de la contrller sau funcție, dar încercați să imprimați ca o singură valoare sau o singură variabilă în fișierul blade laravel, astfel încât să se arunce o eroare

->use any think care convertește array în string it work.

soluție: 1) executați bucla foreach și obțineți o singură valoare unică și imprimați. 2)Funcția implode() returnează un șir de caractere din elementele unui array. {{ implode($variabila ta,’,’) }}}

implode este cel mai bun mod de a face acest lucru și funcționează 100%.

Tags:,