Debido a la gran dependencia de los archivos XML, me está costando mucho descubrir la causa de este error al crear una grilla de administración personalizada:
Error fatal: Método Magento \ Ui \ TemplateEngine \ Xhtml \ Result :: __ toString () no debe lanzar una excepción en C: \ wamp64 \ www \ mage2 \ vendor \ magento \ module-ui \ Component \ Wrapper \ UiComponent.php en línea 0 0
Estoy tratando de hacer una cuadrícula de administración para la sales_shipment_item
tabla.
Hasta ahora tengo:
Usó xdebug y lo colocó dentro del
__toString()
método de la clase Resultado, no muestra cuál es el error realHe
var_dump
-ed las variables dentro del__toString()
métodoTengo el modo desarrollador activado en Magento 2
He comprobado el
var/logs
y no muestra nada útil
He realizado con éxito otras cuadrículas personalizadas de administrador, pero tratar de descubrir el error real es como una aguja en un pajar. ¿Alguien ha encontrado una mejor manera de depurar esto? He revisado todas las cuadrículas xml di.xml
, y modelos y todo se ve bien.
Magento\Ui\TemplateEngine\Xhtml\Result::__toString()
, capture la excepción e inicie sesión o imprímalo. Es lo que M2 debería haber hecho de todos modos.} catch (\Exception $e) { $this->logger->critical($e->getMessage()); $result = $e->getMessage(); }
el error es lo que ya he publicado. Cuando he tenido estos errores antes, generalmente tiene que ver con la falta de inyecciones de di.xml, pero estos son imposibles de depurar sin solo adivinar, por eso publiqué esta pregunta.Respuestas:
El error que está recibiendo se activa de hecho
vendor\magento\module-ui\Component\Wrapper\UiComponent.php
.Sin embargo, no se activa en la línea 0, sino cuando el resultado se convierte en una cadena en el siguiente método en la declaración de retorno :
Esto es lo que puede intentar para solucionar su problema:
$result
contiene antes de que se llame la conversión de cadena y la declaración de retorno$component->getName()
,$component->getComponentName()
y$component->getData()
para ayudarle a descubrir lo que es el problemafuente
Este error fatal también se me ocurrió cuando agregué una lista / cuadrícula personalizada. Solucioné este problema cambiando el constructor e iniciando la recopilación correcta para mi listado / cuadrícula de datos en el constructor del proveedor de datos. Ejemplo de cuadrícula personalizada DataProvider.php
Pero debe crear \ Acme \ CustomModule \ Model \ ResourceModel \ Entity \ Listing \ Collection para obtener sus datos en el proveedor de datos
fuente
SI migró M1 a M2, se enfrenta a algo por debajo del error durante la ejecución de cmd . No se encontró el almacén solicitado. Verifique la tienda e intente nuevamente.
por favor no cambie en los archivos de la tienda de módulos del proveedor :
simplemente aplique los siguientes pasos:
Hace poco me encontré con esta misma situación después de migrar de Magento 1.9.3.8 a 2.3.0 y espero que mi respuesta pueda ser de ayuda. El problema vino de eliminar múltiples tiendas 96 de ellas para ser exactos. Intenté todas las otras respuestas aquí pero seguía recibiendo el mismo error.
La solución para mí fue eliminar los datos de la tienda anterior del interior de "core_config_data" . El problema es que cuando Magento está cargando los datos de configuración del tiempo de ejecución, está encontrando las tiendas antiguas e intentando resolverlas. Antes de limpiar los datos de la base de datos, le recomiendo que ejecute la consulta SELECCIONAR a continuación para asegurarse de eliminar las tiendas correctas.
ADVERTENCIA: ¡ASEGÚRESE DE HACER UNA COPIA DE SEGURIDAD DE SU BASE DE DATOS ANTES DE EJECUTAR ESTO!
Ahora ejecute todos los comandos de magento, puede ver el "No se encontró la tienda solicitada. Verifique la tienda e intente nuevamente" fijada por consulta
Ahora revise su administrador por encima del error fatal también resuelto blahhh ... blahh ...
(Nota: - fatal error_Magento \ Ui \ TemplateEngine \ Xhtml \ Result :: __ toString () depende del módulo de la tienda, así que no cambie / vendor / module-store; de lo contrario, no podrá ver los datos adecuados)
fuente
Después de innumerables horas y muchos golpes en mi cabeza contra el escritorio, descubrí que recibía este error, porque estaba usando xdebug (¡lo cual es increíble!) Para alcanzar un punto de interrupción en una función de bajo nivel, es decir
Magento\Ui\TemplateEngine\Xhtml\Result::__toString()
, para probar.Aparentemente, de alguna manera, la salida del depurador arrojaba un error que causaba que el método __toString me gritara.
Me estaba volviendo loco porque el error solo se mostraba cuando tenía el depurador encendido y pensaba que tal vez tenía algo que ver con la llamada AJAX al completar el listado de UI. Apagarlo pareció hacerlo funcionar, por lo que vale la pena intentarlo. No estoy muy seguro de cómo funciona la funcionalidad de punto de interrupción de xdebug (en los productos IntelliJ específicamente ... posiblemente), aparte de que puede invocar un punto de interrupción con la línea
xdebug_break()
. Es muy probable que tener un punto de interrupción en el método __toString sea algo tonto en cualquier caso.Supongo que no podemos depurar todo dinámicamente todavía ... ¡Un día!
Realmente espero que esto ayude a alguien más.
fuente