Aprende a preparar un entorno de desarrollo para tu proyecto de Shopware.

Cómo configurar un entorno de depuración en Shopware

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:

Shopware Exception

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:

Smarty Debug Templates

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:

Smarty Shopware Debug Templates

Si conoces otra configuración o herramientas para depurar en Shopware, compártela con la comunidad en el cuadro de comentarios.

Que te diviertas ❤️!


Ingeniero de Software Senior en EPAM Anywhere. Interesado en la programación desde los 14 años, Carlos es un programador autodidacta, fundador y autor de la mayoría de los artículos de Our Code World.

Conviertete en un programador más sociable

Patrocinadores