2012-04-11 20 views
8

Symfony doc dice:
Symfony2: variable de sesión global en plantilla PHP

During each request, Symfony2 will set a global template variable app in both Twig and PHP template engines by default. The app variable is a GlobalVariables instance which will give you access to some application specific variables automatically:
app.security - The security context.
app.user - The current user object.
app.request - The request object.
app.session - The session object.
app.environment - The current environment (dev, prod, etc).
app.debug - True if in debug mode. False otherwise.

Ejemplos:
En ramita: {{ app.request.method }}
En PHP: echo $app->getRequest()->getMethod() En ramita: {{ app.user.username }}
Pero para el objeto de sesión:
En ramita: {{ app.session.varname }}
En PHP: // I don't know, do you know how to call it?

He intentado: $session = $app->getSession('uid'); pero cuando intento para almacenarlo a una base de datos me dice:

Catchable Fatal Error: Object of class Symfony\Component\HttpFoundation\Session could not be converted to string in C:\wamp\www...

Hay una falta de recursos cuando se trata de plantillas PHP, pero en mi caso no se puede cambiar por algunas razones.

La pregunta en otras palabras, ¿cuál es el equivalente en la plantilla de PHP de:
{{ app.session.varname }}?

Respuesta

13

En ramita: {{ app.session.varname }}

En PHP: echo $app->getSession()->get('uid');

+1

Oye, ¿te estás burlando de mí? :) Genial, eso lo hizo, muchas gracias por tu respuesta. –

+0

Sin burlarse. Hice su pregunta comentada y posicionada para aclarar qué problema se estaba tratando. Entonces @Daniel Ribereiro entró y editó cosas. No tengo idea de por qué, pero estropeó la intención. – Cerad

+0

Malo, fue con buenas intenciones. –

0
$session = $this->get('session'); 

if ($session->has('varname')) { 
    echo $session->varname 
} 
+1

¿Estás seguro de que funciona en una plantilla de page.html.php? Me da este error: 'Aviso: propiedad indefinida: Symfony \ Bundle \ FrameworkBundle \ Templating \ Helper \ SessionHelper :: $ uid en C: \ wamp \ www \ ...' Ya estoy usando tu código en el controlador predeterminado para cada controlador y presentar el valor de la sesión, lo que estoy tratando de evitar con mi pregunta aquí, necesito usar una variable global como dice Symfony2 docs arriba. –

0

has necesitado error_log $ app-> getSession() para ver lo que devuelve?

error_log(var_dump($app->getSession(), true));