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

Zend Problemas con ruta de Formularios

Estas en el tema de Zend Problemas con ruta de Formularios en el foro de Zend en Foros del Web. Hola a todos en el foro, Mi pregunta es como puedo setear la ruta de los formularios de zend tengo problemas cuando trato de instanciar ...
  #1 (permalink)  
Antiguo 28/02/2011, 09:29
Avatar de uselox  
Fecha de Ingreso: agosto-2008
Ubicación: Lima, Perú
Mensajes: 168
Antigüedad: 15 años, 7 meses
Puntos: 12
Zend Problemas con ruta de Formularios

Hola a todos en el foro,

Mi pregunta es como puedo setear la ruta de los formularios de zend tengo problemas cuando trato de instanciar una clase

Fatal error: Class 'Form_Registro' not found in D:\Server\www\depor\application\modules\default\co ntrollers\RegistroController.php on line 8

creo q el problema es porque estoy trabajando con modulos y tengo en cada modulo una carpeta forms junto a los controllers y views

alguien me podria ayudar? pls
  #2 (permalink)  
Antiguo 28/02/2011, 09:50
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: Zend Problemas con ruta de Formularios

Que tal uselox,

Los resources types(aka, forms, models, services), deben tener el prefijo del modulo, en el ejemplo que mostras el nombre de la clase deberia ser Default_Form_Registro , estar bajo la carpeta modules/default/forms y el fichero fisico llamarse Registro.php, tambien debes tener en cada modulo un bootstrap que extienda de Zend_Application_Module_Bootstrap para que te inice de forma automatica el autoloader de los resources, algo asi:

Código PHP:
Ver original
  1. //modules/default/Bootstrap.php
  2. class Default_Boostrap extends Zend_Application_Module_Bootstrap
  3. {}

igual te comento a titulo meramente informativo que para agregar nuevos resources podes sobreescribir el metodo initResourceLoader en el bootstrap, algo asi:

Código PHP:
Ver original
  1. //Default_Bootstrap
  2. public function initResourceLoader()
  3. {
  4.     $loader = $this->getResourceLoader();
  5.     /**
  6.      * @param identifier
  7.      * @param path
  8.      * @param namespace
  9.      */
  10.     $loader->addResourceType('helper', 'helpers', 'Helper');
  11. }

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #3 (permalink)  
Antiguo 28/02/2011, 09:56
Avatar de uselox  
Fecha de Ingreso: agosto-2008
Ubicación: Lima, Perú
Mensajes: 168
Antigüedad: 15 años, 7 meses
Puntos: 12
Respuesta: Zend Problemas con ruta de Formularios

Hice todo lo que escribiste y me sigue saliendo el error

Fatal error: Class 'Default_Form_Registro' not found in \application\modules\default\controllers\RegistroC ontroller.php on line 8


no tengo que setear la ruta en el bootstrap main?
y los bootstrap por modulo no lo estoy usando porque se ejecutan todos y no es lo que busco es necesario usarlos?

gracias por tu respuesta.
  #4 (permalink)  
Antiguo 28/02/2011, 10:08
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: Zend Problemas con ruta de Formularios

Lo que puedes hacer es agregar en tu config.ini el appNamespace = "Application" y entonces poner como Application_Form_Registro.

Saludos.
  #5 (permalink)  
Antiguo 28/02/2011, 10:12
Avatar de uselox  
Fecha de Ingreso: agosto-2008
Ubicación: Lima, Perú
Mensajes: 168
Antigüedad: 15 años, 7 meses
Puntos: 12
Respuesta: Zend Problemas con ruta de Formularios

y luego en que ruta guardo el archivo Registro.php ?
me sigue saliendo el mismo error
  #6 (permalink)  
Antiguo 28/02/2011, 10:15
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: Zend Problemas con ruta de Formularios

Una de las tareas de los modules boostrap's es instanciar el autoloader de los resources, sino queres crearlos, tenes que hacer el autoload de forma manual, en el bootstrap de la aplicación, podrias hacer algo asi:


Código PHP:
Ver original
  1. //Bootstrap.php
  2. protected function _initAutoloader()
  3. {
  4.     $this->bootstrap('frontController');
  5.     $fc = $this->getResource('frontController');
  6.  
  7.     $modules = $fc->getControllerDirectory();
  8.  
  9.     foreach ($modules as $module => $dir) {
  10.         $moduleName = strtolower($module);
  11.         $moduleName = str_replace(array('-', '.'), ' ', $moduleName);
  12.         $moduleName = ucwords($moduleName);
  13.         $moduleName = str_replace(' ', '', $moduleName);
  14.         $loader = new Zend_Application_Module_Autoloader(array(
  15.             'namespace' => $moduleName,
  16.             'basePath' => realpath($dir . "/../"),
  17.         ));
  18.     }
  19. }

esto inicializa el autoloader de todos los modulos, si queres inicializar el de un modulo, seria algo asi:

Código PHP:
Ver original
  1. //Bootstrap.php
  2. protected function _initAutoloader()
  3. {
  4.     $loader = new Zend_Application_Module_Autoloader(array(
  5.         'namespace' => 'default',
  6.         'basePath' => APPLICATION_PATH . '/modules/default'
  7.     ));
  8. }

igual no veo el problema con los Bootstrap's.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #7 (permalink)  
Antiguo 28/02/2011, 10:39
Avatar de uselox  
Fecha de Ingreso: agosto-2008
Ubicación: Lima, Perú
Mensajes: 168
Antigüedad: 15 años, 7 meses
Puntos: 12
Respuesta: Zend Problemas con ruta de Formularios

listo ahora me funciona correctamente pero solo si creo los bootstrap por modulo, adicionalmente agrege

resources.modules[] =

al .ini, pero no me funciona el autoload manual, cambie la ruta del basePath por las rutas de los modulos asi:

Código PHP:
Ver original
  1. 'basePath' => realpath(APPLICATION_PATH . "/modules/" . $moduleName)

Etiquetas: php
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:07.