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

Problema Zend Router modular

Estas en el tema de Problema Zend Router modular en el foro de Zend en Foros del Web. Hola amigos: estoy tratando de hacer una aplicación en zend modular, en la cual al modulo default que será mi front-end le deseo aplicar URL ...
  #1 (permalink)  
Antiguo 24/08/2012, 17:05
 
Fecha de Ingreso: abril-2010
Ubicación: Lima-Peru
Mensajes: 94
Antigüedad: 14 años
Puntos: 2
Pregunta Problema Zend Router modular

Hola amigos:

estoy tratando de hacer una aplicación en zend modular, en la cual al modulo default que será mi front-end le deseo aplicar URL amigables hasta dos niveles y al modulo admin que será mi back-end deseo que mantega la estructura de url de Zend.

tengo en mi bootstrap. php lo siguiente:
Código PHP:
<?php

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{

    public function 
_initAutoload(){
        
$modelLoader = new Zend_Application_Module_Autoloader(array(
                        
'namespace'=>'Default',
                        
'basePath'=> APPLICATION_PATH.'/modules/default'));
        return 
$modelLoader;
    }
    
    protected function 
_initPlugins(){
$this->bootstrap('frontController');
$plugin = new My_PluginLayout();
        
$this->frontController->registerPlugin($plugin);

}
        
    protected function 
_initRouters()
        {
        
$router Zend_Controller_Front::getInstance()->getRouter();

        
$router->addRoute('default',
                new 
Zend_Controller_Router_Route('/:url', array(
                    
'url'=>':url',
                    
'module' => 'default',
                    
'controller' => 'index',
                    
'action' => 'index'
                    
))
                );

            
$router->addRoute('default2',
                new 
Zend_Controller_Router_Route('/:preurl/:url', array(
                    
'preurl'=>'',
                    
'url'=>'',
                    
'module' => 'default',
                    
'controller' => 'index',
                    
'action' => 'index'
                
))
            );

            
$router->addRoute('default3',
                new 
Zend_Controller_Router_Route('/:preurl/:url/:u', array(
                    
'preurl'=>'',
                    
'url'=>'',
                    
'u' =>'',
                    
'module' => 'default',
                    
'controller' => 'index',
                    
'action' => 'index'
                    
))
                );
        
/* FIN router module default */
        
$route = new Zend_Controller_Router_Route(
            
'admin/*',
        array(
            
'module' => 'admin'
            
)
        );
        
$router->addRoute('admin'$route);
        
        
$route = new Zend_Controller_Router_Route(
            
'admin/:controller/*',
            array(
                
'module' => 'admin',

            )
        );
        
$router->addRoute('admin1'$route);
        
$route = new Zend_Controller_Router_Route(
            
'admin/:controller/:action/*',
            array(
                
'module' => 'admin',

            )
        );
        
$router->addRoute('admin2'$route);
    }
}
La parte del front-end funciona bien pero en el modulo admin esta el problema pues cuando quiero llamar a un controlador o accion me llama de esta forma:

Código:
http://localhost/CMS/public/admin/controller/configuracion/action/inicio
donde: admin es el modulo, configuracion el controlador e inicio la accion

Alguien me puede ayudar para resolver el problema.

Gracias.

Última edición por daniko_013; 24/08/2012 a las 17:09 Razón: error
  #2 (permalink)  
Antiguo 24/08/2012, 17: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: Problema Zend Router modular

El _initAutoload que tienes no es necesario, es lo que hace Zend por defecto y ten en cuenta que estas pisando la ruta por defecto(default) cambia el nombre y seria mejor que fuera por algo mas descriptivo ;), también te sugiero que trabajes con virtual host's.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #3 (permalink)  
Antiguo 24/08/2012, 17:37
 
Fecha de Ingreso: abril-2010
Ubicación: Lima-Peru
Mensajes: 94
Antigüedad: 14 años
Puntos: 2
Respuesta: Problema Zend Router modular

Gracias por la respuesta, tendre presente tus sugerencias, pero como comentaba el moculo default funciona muy bien el problema es en el modulo admin y la verdad he intentado algunas formas de configurar el router pero no lo he logrado
  #4 (permalink)  
Antiguo 24/08/2012, 19:05
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: Problema Zend Router modular

Has modificado el nombre de la ruta default ?(digamos en vez de default, custom-default), porque si pisas la que trae por defecto no va a "saber" como rutear.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #5 (permalink)  
Antiguo 25/08/2012, 07:46
 
Fecha de Ingreso: abril-2010
Ubicación: Lima-Peru
Mensajes: 94
Antigüedad: 14 años
Puntos: 2
Respuesta: Problema Zend Router modular

hola, he cambiado lo que me has sugerido, pero igual el problema continua.

Gracias
  #6 (permalink)  
Antiguo 25/08/2012, 10:51
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: Problema Zend Router modular

En ese caso crea el virtual host y deberías acceder sin problemas vía http://yourprojectname.local/admin

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #7 (permalink)  
Antiguo 27/08/2012, 07:54
 
Fecha de Ingreso: abril-2010
Ubicación: Lima-Peru
Mensajes: 94
Antigüedad: 14 años
Puntos: 2
Respuesta: Problema Zend Router modular

Hola masterpuppet:

ya configuré mi virtualHost como me sugeriste igual cuando quiero acceder al controlador "configuracion" y la accion "inicio" me direcciona a:
Código:
http://www.cms.com/admin/controller/configuracion/action/inicio
y asi tengo implementado el link:
Código PHP:
<a href="<?php echo $this->url(array('module'=>'admin','controller'=>'configuracion','action'=>'inicio')); ?>"><img src="<?php echo $this->baseUrl(); ?>/images/home.png"></img>
  #8 (permalink)  
Antiguo 27/08/2012, 09:18
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: Problema Zend Router modular

Como te dijo masterpuppet estas pisando el router por defecto (default), luego el segundo parámetro a url() es el nombre de la ruta para ensamblar, tienes que indicarle que ruta quieres que use el helper para ensamblar tus routes.

Saludos.
  #9 (permalink)  
Antiguo 27/08/2012, 09:24
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: Problema Zend Router modular

También deberias eliminar las rutas admin que tienes en initRoutes, ya que lo que estas intentado hacer es lo que hace el fw por default.
__________________
http://es.phptherightway.com/
thats us riders :)
  #10 (permalink)  
Antiguo 27/08/2012, 09:37
 
Fecha de Ingreso: abril-2010
Ubicación: Lima-Peru
Mensajes: 94
Antigüedad: 14 años
Puntos: 2
Respuesta: Problema Zend Router modular

pero cuando quito las rutas admin de mi _initRouters(), y entro a www.cms.com/admin no ingresa a mi modulo admin sino lo toma como parte del modulo default.
  #11 (permalink)  
Antiguo 27/08/2012, 10:40
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: Problema Zend Router modular

Debe funcionar sin que agregues la ruta, si no lo hace es porque tienes algo mal en tu configuración, postea el application.ini y recuerda de no pisar la ruta default

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #12 (permalink)  
Antiguo 27/08/2012, 10:47
 
Fecha de Ingreso: abril-2010
Ubicación: Lima-Peru
Mensajes: 94
Antigüedad: 14 años
Puntos: 2
Respuesta: Problema Zend Router modular

esta es mi configuración:

application.ini
Código:
[production]
resources.modules[] = ""
phpSettings.display_startup_errors = 1 ;cambiar 0
phpSettings.display_errors = 1 ;cambiar 0
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = "Application"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 1 ;cambiar 0

resources.frontController.params.prefixDefaultModule = "1" 
autoloaderNamespaces[] = "My"

resources.view.helperPath.My_View_Helper = "My/View/Helper"
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/"

default.resources.layout.layoutPath = APPLICATION_PATH "/modules/default/layouts/scripts/"
default.resources.layout.layout = layout
admin.resources.layout.layoutPath = APPLICATION_PATH "/modules/admin/layouts/scripts/"
admin.resources.layout.layout = layout

resources.db.adapter = pdo_mysql
resources.db.params.host = localhost
resources.db.params.username = root
resources.db.params.password = admin
resources.db.params.dbname = cms

[staging : production]

[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1
bootstrap.php
Código PHP:
<?php

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{

    protected function 
_initPlugins(){
    
$this->bootstrap('frontController');
    
$plugin = new My_PluginLayout();
        
$this->frontController->registerPlugin($plugin);

    }
        
    protected function 
_initRouters()
        {
        
$fronController  Zend_Controller_Front::getInstance(); 
        
$router $fronController->getRouter();
        
        
$router->addRoute('custom-default',
                new 
Zend_Controller_Router_Route('/:url', array(
                    
'url'=>':url',
                    
'module'    => 'default',
                    
'controller' => 'index',
                    
'action' => 'index'                
                    
))
                );

            
$router->addRoute('custom-default2',
                new 
Zend_Controller_Router_Route('/:preurl/:url', array(
                    
'preurl'=>'',
                    
'url'=>'',
                    
'module'    => 'default',
                    
'controller' => 'index',
                    
'action' => 'index'                
                
))
            );

            
$router->addRoute('custom-default3',
                new 
Zend_Controller_Router_Route('/:preurl/:url/:u', array(
                    
'preurl'=>'',
                    
'url'=>'',
                    
'u' =>'',
                    
'module'    => 'default',
                    
'controller' => 'index',
                    
'action' => 'index'
                    
))
                );        
        
/* FIN router module default */
        
    
}
}

Etiquetas: class, modular, php, router
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 16:13.