La depuración en Shopware puede ser un dolor de cabeza si no conoces o no utilizas las herramientas adecuadas. Como se mencionó anteriormente en nuestro tutorial de depuración y creación de perfiles de Shopware de la manera correcta utilizando Shopware Profiler, mostramos cómo instalar Shyim Profiler para depurar plantillas, consultas y rendimiento de red con una barra de herramientas útil en la interfaz. Sin embargo, ¿cómo se puede depurar un error que no aparece en la interfaz sino solo en una pantalla en blanco? Si no ves las excepciones lanzadas por PHP en la interfaz, probablemente no hayas configurado correctamente tu archivo config.php
para mostrar las excepciones en la interfaz.
1. Mostrar excepciones de PHP y deshabilitar la caché de plantillas
Como la mayoría de los frameworks, puedes configurar opciones globales en un solo archivo. En este caso para el software de compras, la configuración de PHP se configura en el archivo config.php
de la carpeta raíz del proyecto. El archivo devuelve básicamente una matriz simple con algunas opciones. La configuración depende totalmente de usted, por lo que para obtener más información, lee los documentos para obtener más información sobre este archivo .
Como queremos depurar, la siguiente configuración mostrará información sobre los errores de JS y PHP en el frontend y el backend de su aplicación shopware:
Nota
Esta configuración solo es segura para el entorno de desarrollo (localmente), nunca la uses para producción.
<?php
return array(
// Aquí debe encontrar la configuración de la base de datos ...
// ../
// Warning:
// Solo con fines de depuración, no utilices esta configuración en producción.
'front' => [
'throwExceptions' => true,
'showException' => true
],
'template' => [
'forceCompile' => true
],
'model' => [
'cacheProvider' => 'Array'
],
'cache' => [
'backend' => 'Black-Hole',
'backendOptions' => [],
'frontendOptions' => [
'write_control' => false
]
],
"phpsettings" => [
'display_errors' => 1,
'error_reporting' => E_ALL
]
);
Después de limpiar todas las cachés con la nueva configuración, ahora podrás ver los mensajes detallados y las excepciones que puede generar Shopware:
Las propiedades más importantes para la depuración son phpsettings, el caché y la plantilla. Por ejemplo, establecer forceCompile
en false evita el almacenamiento en caché de las plantillas Smarty. Normalmente, debes borrar su caché después de cada cambio en la plantilla, pero si estableces forceCompile
en verdadero, tu plantilla se compilará en cada recarga. Esta debería ser una opción esencial para todos los desarrolladores. Ten en cuenta que tiene un gran impacto en los tiempos de carga y nunca debe usarse en producción.
La diferencia entre throwExceptions y showExceptions es cómo se manejará una excepción. La opción showException mantiene habilitado el controlador de errores de Shopware, detecta la excepción de PHP e imprime el mensaje en lugar de mostrar el mensaje genérico "¡Vaya! ¡Se ha producido un error!" mensaje. Por el contrario, la opción throwExceptions omite el controlador de errores de Shopware y genera la excepción pura de PHP. Es importante entender esto, porque algunos errores deben ser detectados por el controlador de errores de Shopware para los procesos de autorreparación, por ejemplo, la invalidación del token CSRF.
2. Depurar plantillas de Smarty
Si deseas depurar en tus plantillas de Smarty, puedes usar modificadores de Smarty como:
{somevariable|@var_export}
{somevariable|@var_dump}
{somevariable|@print_r}
Además, puedes volcar todas las variables asignadas a una plantilla utilizando Smarty Debug Console. Sí, sabelotodo no invadas la estructura HTML de tu proyecto para depurar variables si usas el bloque de depuración en cualquier plantilla donde desees depurar:
{block name="frontend_index_logo"}
{* This will show the Smarty Debug PopUp*}
{debug}
<div class="shop--slogan">
<h2>Some HTML</h2>
</div>
{/block}
Agregar esta línea dentro de cualquier bloque mostrará una ventana emergente con una vista de Smarty que mostrará un lsit de variables utilizadas en la plantilla donde agregó el bloque. Como se mencionó, la ventana emergente puede estar bloqueada en algunos navegadores por razones de seguridad, no olvide permitir las ventanas emergentes en su navegador para el sitio web que está depurando:
después de permitir los PopUps (en caso de que estuviera bloqueado), vuelve a cargar la página y el PopUp del navegador debería aparecer:
Si conoces otra configuración o herramientas para depurar en Shopware, compártela con la comunidad en el cuadro de comentarios.
Que te diviertas ❤️!
Conviertete en un programador más sociable