Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Ayuda con plugin o helpers

Estas en el tema de Ayuda con plugin o helpers en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Que tal, necesito ayuda con el uso de plugin en ZF, este es mi plugin: Código PHP: require_once  "admin/models/LoginModelo.php" ; class  My_Controller_Plugin_IsLoggedIn  extends  Zend_Controller_plugin_Abstract { ...
  #1 (permalink)  
Antiguo 11/02/2011, 18:32
 
Fecha de Ingreso: noviembre-2008
Mensajes: 62
Antigüedad: 15 años, 5 meses
Puntos: 2
Ayuda con plugin o helpers

Que tal, necesito ayuda con el uso de plugin en ZF, este es mi plugin:
Código PHP:
require_once "admin/models/LoginModelo.php";

class 
My_Controller_Plugin_IsLoggedIn extends Zend_Controller_plugin_Abstract{
    
//put your code here
    
public function preDispatch()
    {
        if(
LoginModelo::isLoggedIn()){
            return 
$this->view->urlDestino "/admin/";
        } else {
            return 
$this->view->urlDestino "/usuario/login/";
        }
    }

vista.phtml
<a href="<?php echo $this->baseUrl.$this->urlDestino; ?>">Administraci&oacute;n</a>

No se si esta bien hacer esto, pero que cuando este logeado un usuario en mi aplicación tenga disponible en el VIEW una variable. Lo que quiero que esta variable este disponible en toda mi aplicación.

Ahora no se si esto también es posible hacerlo con Helpers
Gracias de ante mano por las sugerencias.
  #2 (permalink)  
Antiguo 11/02/2011, 20:09
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Ayuda con plugin o helpers

No es lo más correcto, deberías de hacer un view helper para eso, pero si lo quieres hacer en un controller plugin lo mejor es que uses el HelperBroker para obtener el view Helper y ahí inyectar la variable.

Saludos.
  #3 (permalink)  
Antiguo 12/02/2011, 06:33
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: Ayuda con plugin o helpers

Para tener una variable en la vista con el markup preparado, deberías utilizar un action helper y en el bootstrap registrarlo con el broker.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #4 (permalink)  
Antiguo 12/02/2011, 20:23
 
Fecha de Ingreso: noviembre-2008
Mensajes: 62
Antigüedad: 15 años, 5 meses
Puntos: 2
Respuesta: Ayuda con plugin o helpers

Bueno logre hacerlo funcionar, si a alguien le sirve, mi helper quedo así:
Código PHP:
require_once "admin/models/LoginModelo.php";

class 
My_View_Helpers_UrlDestino extends Zend_View_Helper_Abstract
{
    
//declarar un constructor
    
public function urlDestino(){
        if(
LoginModelo::isLoggedIn()){
            return 
$this->view->urlDestino "/admin/";
        } else {
            return 
$this->view->urlDestino "/usuario/login/";
        }
    }

y en el view lo llamo así:
<a href="<?php echo $this->baseUrl.$this->urlDestino(); ?>">Administraci&oacute;n</a>

tuve que registrar en el bootstrap el helper:

protected function _initHelpers(){
$viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelp er('ViewRenderer');
$viewRenderer->view->addHelperPath('My/View/Helpers/','My_View_Helpers_');
}

HASTA AQUI FUNCIONA CORRECTAMENTE

POR AHÍ DICEN QUE TAMBIEN SE PUEDE HACER ESTO EN EL BOOTSTRAP

protected function _initHelpers(){
Zend_Controller_Action_HelperBroker::addHelper(new My_View_Helpers_UrlDestino());
}
Pero sale este error

Catchable fatal error: Argument 1 passed to Zend_Controller_Action_HelperBroker::addHelper() must be an instance of Zend_Controller_Action_Helper_Abstract, instance of My_View_Helpers_UrlDestino given, called in C:\xampp\htdocs\prueba\application\Bootstrap.php on line 26 and defined in C:\xampp\php\PEAR\Zend\Controller\Action\HelperBro ker.php on line 122

¿Alguien sabe porque el error? GRACIAS

Etiquetas: plugin
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 02:38.