Foros del Web » Programando para Internet » PHP » Zend »

Comprobar tipo de usuario en layout.phtml

Estas en el tema de Comprobar tipo de usuario en layout.phtml en el foro de Zend en Foros del Web. Buenas de nuevo. Vengo con un problema, que creo que en principio no debe ser demasiado complejo, pero no se por donde sacarlo. Os explico: ...
  #1 (permalink)  
Antiguo 31/05/2012, 04:37
Avatar de Lobito14  
Fecha de Ingreso: abril-2010
Mensajes: 222
Antigüedad: 14 años
Puntos: 17
Comprobar tipo de usuario en layout.phtml

Buenas de nuevo.

Vengo con un problema, que creo que en principio no debe ser demasiado complejo, pero no se por donde sacarlo. Os explico:

En mi layout.phtml, tengo arriba una parte de menú, donde, dependiendo de si el usuario es de un tipo o de otro, quiero mostrar/ocultar ciertas opciones.

Bien, para comprobar el tipo de usuario, pensaba hacerlo igual que lo hago en las acciones de los controladores:

Código PHP:
$user_data Zend_Auth::getInstance()->getIdentity();
$role $user_data->type
Y a continuación comprobaría si el $role == 'admin' o lo que fuese, para mostrar/ocultar las opciones del menú.

Al intentar hacer eso en el layout.phtml (quizá sea una aberración, y ni por asomo la forma correcta de realizar esto, pero es como se me ha ocurrido hacerlo, no conozco otra forma), el objeto no se crea, no es capaz de instanciar la clase supongo, y el objeto tiene valor NULL.

He intentado hacerlo instanciando el objeto en el index.php, pero tampoco.

Me gustaría que me ayudasen y me dijesen de que forma puedo hacer esto, ya que no se me ocurre otras...

Un saludo y gracias por su ayuda!! :)
  #2 (permalink)  
Antiguo 31/05/2012, 09:00
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Comprobar tipo de usuario en layout.phtml

Pues fuera de que no es lo correcto, es muy raro que no te sirva en tu layout ya que si lo puedes ver en la vista, lo puedes ver en el layout.

Lo que puedes hacer es un controller plugin para setear la variable como parte del view y así leerlo en el layout como parte del contenedor.
  #3 (permalink)  
Antiguo 31/05/2012, 18:14
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Comprobar tipo de usuario en layout.phtml

Y al momento de llamar a getIdentity el usuario esta logeado ?
__________________
http://es.phptherightway.com/
thats us riders :)
  #4 (permalink)  
Antiguo 01/06/2012, 00:27
Avatar de Uncontroled_Duck
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Málaga [Spain]
Mensajes: 806
Antigüedad: 12 años, 11 meses
Puntos: 261
Respuesta: Comprobar tipo de usuario en layout.phtml

Si obtienes null como resultado puede ser lo que indica masterpuppet
Cita:
Iniciado por masterpuppet Ver Mensaje
Y al momento de llamar a getIdentity el usuario esta logeado ?
O que en el adapter no has incluido la variable que buscas al loguearse.

La opción sería desde el controller pasarlo al view
Código PHP:
$user_data Zend_Auth::getInstance()->getIdentity();
$this->view->role $user_data->type
Después en el layout, o en cualquier parte del las vistas de los controller's lo recuperas con:
Código PHP:
$this->role 
Si no quieres ir haciendo esto en cada controller, prueba con un plugin.

Saludos,
__________________
Todos agradeceremos que pongas el código en su respectivo Highlight
  #5 (permalink)  
Antiguo 01/06/2012, 14:48
Avatar de Lobito14  
Fecha de Ingreso: abril-2010
Mensajes: 222
Antigüedad: 14 años
Puntos: 17
Respuesta: Comprobar tipo de usuario en layout.phtml

Cita:
Iniciado por GatorV Ver Mensaje
Pues fuera de que no es lo correcto, es muy raro que no te sirva en tu layout ya que si lo puedes ver en la vista, lo puedes ver en el layout.

Lo que puedes hacer es un controller plugin para setear la variable como parte del view y así leerlo en el layout como parte del contenedor.
Cita:
Iniciado por masterpuppet Ver Mensaje
Y al momento de llamar a getIdentity el usuario esta logeado ?
Cita:
Iniciado por Uncontroled_Duck Ver Mensaje
Si obtienes null como resultado puede ser lo que indica masterpuppet

O que en el adapter no has incluido la variable que buscas al loguearse.

La opción sería desde el controller pasarlo al view
Código PHP:
$user_data Zend_Auth::getInstance()->getIdentity();
$this->view->role $user_data->type
Después en el layout, o en cualquier parte del las vistas de los controller's lo recuperas con:
Código PHP:
$this->role 
Si no quieres ir haciendo esto en cada controller, prueba con un plugin.

Saludos,
Gracias a todos por vuestras respuestas!! sois muy amables.

GatorV, imaginaba que no era la forma correcta, pero la verdad tampoco te he entendido demasiado bien como me propones que lo haga.

Deciros que mi caraja también era mayúscula, lo que suele pasar después de algunas horas tecleando... El problema estaba en lo que comenta el compañero masterpuppet, cuando hacia la llamada no estaba logueado, y ahí venían los problemas. Ya he añadido que compruebe antes si está logueado para después asignar el valor que sea a la variable.

De nuevo, gracias por vuestra ayuda :)

Etiquetas: clase, instanciar, layout, layout.phtml, objeto
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:21.