Buenas necesito mostrar un determinado archivo dependiendo de la empresa que use la app. Este archivo se mostraría usando un valor de configuración que llegaría de bbdd.
Quiero crear una variable de forma global y añadir este campo para poder usarlo en una plantilla Twig.
$app['imagen_logo'] = $parametro_bbdd; {{ app.imagen_logo }}
Alguna idea ? u otra forma de plantearlo :), Saludos.
Respuestas
Añadir la variable directamente en el contenedor $app
es la forma más correcta de hacerlo. Eso sí, te aconsejo que no escribas directamente el nombre de la opción de configuración porque puedes "machacar" sin querer algún proveedor. Puedes usar un prefijo común para todas estas opciones de configuración. Ejemplo:
$app['config.imagen_logo'] = ...
Por lo que nos cuentas, en este caso seguramente no te va a servir, pero recuerda que las funciones extends
y include
de Twig permiten indicar varias plantillas para que las pruebe todas y utilice la primera que exista. Eso te permite crear fácilmente "temas" que pueden variar de una empresa a otra. Ejemplo:
{{ include([ 'temas/' ~ empresa.id ~ '/menu.html.twig', 'comun/menu.html.twig' ]) }}
@javiereguiluz
El problema que tengo es que una vez que se ha hecho login el usuario y guardar ese parámetro al contenedor, en la vista de ese controlador me muestra la variable,pero al cambiar de vista me da error al no existir la variable.
Yo quiero tenerla disponible en toda la aplicación después del login, para mostrar una imagen.
@ZaoIsmael
En este caso entonces lo mejor sería guardar ese valor en la sesión del usuario justo después de que se "loguee".
@javiereguiluz
Así es como lo he implementado, he creado un campo para el UserProvider y le añado el valor y después lo utilizo en la vista.
{{ app.security.token.user.logo }}
Como era un campo que no estaba relacionado con cada cliente en general, quería hacerlo de otra manera para no añadir otro campo al UserProvider.
Muchas gracias por la ayuda.
@ZaoIsmael