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

Obtener getControllerName() mediante Zend_Controller_Request_Abstract $request

Estas en el tema de Obtener getControllerName() mediante Zend_Controller_Request_Abstract $request en el foro de Zend en Foros del Web. Hola a todos, me encuentro complemente atorado con este problema: Quiero obtener el nombre del controlador " getControllerName() " con esta clase. Ya he ultizado ...
  #1 (permalink)  
Antiguo 22/06/2011, 01:05
 
Fecha de Ingreso: enero-2008
Ubicación: D.F
Mensajes: 7
Antigüedad: 16 años, 3 meses
Puntos: 0
Pregunta Obtener getControllerName() mediante Zend_Controller_Request_Abstract $request

Hola a todos, me encuentro complemente atorado con este problema:

Quiero obtener el nombre del controlador "getControllerName()" con esta clase.
Ya he ultizado
$front = Zend_Controller_Front::getInstance()->getRequest()->getControllerName();
pero ese método no sirve para este procedimiento.

Código PHP:
//library/My/Class/ControllerName.php

class My_Class_ControllerName extends Zend_Controller_Plugin_Abstract
{
    public function 
preDispatch(Zend_Controller_Request_Abstract $request)
    {
        
//Obtener el nombre del controlador
        
$front $request->getControllerName();

       
//Comprobar si el controlador existe
    
if( $request->getDispatcher()->isDispatchable($front) )  
        {  
               
// Ejecutar funciones
        
}
        
    } 
Código PHP:
//bootstrap.php

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
      protected function 
_initVars()
    {
        
$controller = new My_Class_ControllerName();
     }

Agradezco a todos su apoyo. Gracias

Última edición por joniso; 22/06/2011 a las 01:17 Razón: Error al publicar
  #2 (permalink)  
Antiguo 22/06/2011, 02:01
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: Obtener getControllerName() mediante Zend_Controller_Request_Abstract $req

Que tal joniso,

Tienes que registrar el plugin con el FrontController sino no se disparan los hooks, te dejo una referencia http://devzone.zend.com/article/3372

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #3 (permalink)  
Antiguo 22/06/2011, 14:41
 
Fecha de Ingreso: enero-2008
Ubicación: D.F
Mensajes: 7
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Obtener getControllerName() mediante Zend_Controller_Request_Abstract $req

Gracias por tu ayuda, ese era el problema; es necesario registrar el plugin en el bootstrap. Dejo el codigo:
Código PHP:
Ver original
  1. //bootstrap.php
  2. protected function _initPlugins()
  3.     {
  4.        
  5.         $this->bootstrap("frontController");
  6.         $this->frontController->registerPlugin(new My_Class_ControllerName());
  7.  
  8.     }
  9.  
  10. //library/My/Class/ControllerName.php
  11.  
  12. class My_Class_ControllerName extends Zend_Controller_Plugin_Abstract
  13. {
  14.  
  15. public function preDispatch (Zend_Controller_Request_Abstract $request)
  16.         {
  17.                 $c = $request->getControllerName();
  18.                 print_r($c);
  19.                
  20.         }
  21. }
  #4 (permalink)  
Antiguo 23/06/2011, 07:06
 
Fecha de Ingreso: mayo-2011
Mensajes: 256
Antigüedad: 13 años
Puntos: 5
Respuesta: Obtener getControllerName() mediante Zend_Controller_Request_Abstract $req

Perdona y luego como puedes recoger en Nombre del controllador o del module en el Bootsrapt.
Código PHP:
//bootstrap.php
protected function _initPlugins()
    {
        
        
$this->bootstrap("frontController");
        
$this->frontController->registerPlugin(new My_Class_ControllerName());
 
    } 
En el controllador se puede hacer asi.
Código PHP:
$this->getRequest()->getModuleName(); 
Para la vista yo tengo:

Código PHP:
class App_Controller_Plugin_ViewSetup extends
Zend_Controller_Plugin_Abstract
{
     public function 
dispatchLoopStartup(Zend_Controller_Request_Abstract $request)
     {
         
$viewRenderer Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
         
$viewRenderer->init();

       
         
$viewRenderer->view->moduleName $request->getModuleName();
         
$viewRenderer->view->controllerName $request->getControllerName();
         
$viewRenderer->view->actionName $request->getActionName();
     }

Y en la vista me basta con hacer un .

Código PHP:
<?=$this->moduleName?>
Pero como lo recojo segun vuestro ejemplo en el Bootstrapt....Saludos
  #5 (permalink)  
Antiguo 23/06/2011, 07:16
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: Obtener getControllerName() mediante Zend_Controller_Request_Abstract $req

En el Bootstrap no tienes acceso a los parámetros del Request porque este ni siquiera se ha inicializado.
__________________
http://es.phptherightway.com/
thats us riders :)
  #6 (permalink)  
Antiguo 23/06/2011, 07:49
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Obtener getControllerName() mediante Zend_Controller_Request_Abstract $req

Para eso se usa un plugin.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 23/06/2011, 08:24
 
Fecha de Ingreso: mayo-2011
Mensajes: 256
Antigüedad: 13 años
Puntos: 5
Respuesta: Obtener getControllerName() mediante Zend_Controller_Request_Abstract $req

Muchas gracias, hay otra cosa q no me queda muy claro ,porq en una aplicacion de varios modulos, si vas a un modulo siempre pasa por los boostrapt de todos los modulos...
  #8 (permalink)  
Antiguo 23/06/2011, 08:53
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: Obtener getControllerName() mediante Zend_Controller_Request_Abstract $req

Eso es por diseño, todos los bootstraps se ejecutan independientemente del modulo al que vayas a accesar.

Saludos.
  #9 (permalink)  
Antiguo 23/06/2011, 08:58
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: Obtener getControllerName() mediante Zend_Controller_Request_Abstract $req

Dejo una referencia al tema http://weierophinney.net/matthew/arc...and-Donts.html
__________________
http://es.phptherightway.com/
thats us riders :)

Etiquetas: frameworks-y-php-orientado-a-objetos, getcontrollername, zend-controller
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 08:00.