Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

Silex, crear una variable global

13 de agosto de 2015

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

#1

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

14 agosto 2015, 11:08
#2

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

14 agosto 2015, 11:26
#3

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

14 agosto 2015, 11:30
#4

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

14 agosto 2015, 11:55