php laravel runtime-error tostring render-to-string

php - Error de laravel: El método Illuminate / View / View::__ toString() no debe arrojar una excepción



runtime-error render-to-string (3)

¿Has visto este adorable error mientras trabajabas en Laravel?

Method Illuminate/View/View::__toString() must not throw an exception

Lo he visto y es increíblemente molesto. He descubierto dos razones por las que se arroja este error. Solo quiero ayudar a las personas a no tomar horas y horas.

Ver respuestas y situaciones a continuación. :)


Hay una solución muy simple: no arroje el objeto View a una cadena.

No hacer: echo View::make(''..''); o echo view(''..'');

Hacer: echo View::make(''..'')->render(); o echo view(''..'')->render();

Al proyectar vista, usa el método __toString() automáticamente, que no puede lanzar una excepción. Si llama a render() manualmente, las excepciones se manejan normalmente. Este es el caso si hay un error en la vista: laravel arroja una excepción.

Esto en realidad es una limitación de PHP, no Laravels. Lea más sobre esta "característica" aquí: https://bugs.php.net/bug.php?id=53648


Situación 1: intentar imprimir un valor en una matriz.

Respuesta 1: intente imprimir la matriz. ¿Estás seguro de que es una matriz? Obtuve este error cuando era un objeto en lugar de una matriz. Intenta hacer print_r y ver lo que obtienes.

Situación 2: tiene esta matriz asociada como esta:

Array ( [post_id] => 65 [post_text] => Multiple Images! [created_at] => 2014-10-23 09:16:46 [updated_on] => [post_category] => stdClass Object ( [category_label] => Help Wanted [category_code] => help_wanted ) [employee_full_name] => Sam Jones [employee_pic] => /images/employee-image-placeholder.png [employee_email] => [email protected] [post_images] => Array ( [0] => stdClass Object ( [image_path] => 9452photo_2.JPG ) [1] => stdClass Object ( [image_path] => 8031photo_3.JPG ) ) )

Cuando intenta acceder a la matriz post_images directamente dentro de una Vista, arroja un error. No importa. Qué. Tú. Hacer.

Respuesta 2: Compruebe en todos los lugares a los que llama la Vista. Lo que sucedió aquí es que estaba tratando de acceder a la misma vista en otro lugar en un área donde no estaba dando la matriz post_images. Tomó FOREVER para descubrirlo.

Espero que esto ayude a alguien más. :) Solo sé que el error que seguí recibiendo no me ayudó en ningún lado.


un error similar es:

FatalErrorException en la línea 0 de FooController.php: Método App / Models / Foo :: __ toString () no debe lanzar una excepción

y fue solo una mala asignación: $foo.= new Foo;

en lugar de: $foo = new Foo;