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;