2012-09-23 87 views
6

Cuando estudio la aplicación de esqueleto de Zend Framework 2, quiero agregar una etiqueta en la esquina superior derecha de la página para mostrar UserName que han iniciado sesión. Pero, estoy confundido en el código de la barra de navegación que se definió en layout.pthml, ¿cómo se puede comunicar el controlador con el layout.phtml para modificarlo?Zend Framework 2: Modificar detalles de layout.pthml en los controladores

¡Gracias de antemano!

Además, quiero un formulario de inicio de sesión en la parte superior derecha de la página cuando el usuario no inicia sesión con ayuda. Pero no sé cómo agregar un formulario con ayuda, ¿qué debo hacer?

+0

¿Por qué no elige la variable de sesión para guardar el nombre de usuario? –

+0

quiero "mostrar" el nombre de usuario – zc1415926

+0

, por supuesto, insertar el nombre de usuario en la sesión en el controlador, luego usar ese valor en el diseño. –

Respuesta

7

desde un controlador puede utilizar el plugin controlador llamado “Diseño” para establecer una variable:

$this->layout()->username = “some value”; 

Luego, en layout.phtml que debería ser capaz de hacer:

<?php echo $this->username; ?> 

Si Eche un vistazo a Zend\Mvc\Controller\Plugin\Layout y verá que el método __invoke sin parámetros devolverá una instancia de ViewModel, de ahí que esto funcione.

1

Si desea definirlo módulo de ancho, en su module.php

public function onBootstrap(MvcEvent $e) 
{ 
    .... 
    $e->getViewModel()->setVariable('username', 'some_value'); 
} 

y en su layout.phtml

echo $layout->username; 
0

En module.php u puede hacer esto

public function onBootstrap(MvcEvent $e) 
{ 
    .... 
    $e->getViewModel()->setVariable('username', $username); 
} 

Y en su diseño puede hacer

echo $this->layout()->username; 

También compruebe si ha utilizado la clase MvcEvent.

Cuestiones relacionadas