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

proyecto modular zf

Estas en el tema de proyecto modular zf en el foro de Zend en Foros del Web. Hola: Decidí dividir en módulos un proyecto, y me generó una carpeta /modules dentro de la cual tiene /default, /login y /admin, el controlador de ...
  #1 (permalink)  
Antiguo 04/04/2013, 11:19
 
Fecha de Ingreso: enero-2010
Mensajes: 491
Antigüedad: 14 años, 10 meses
Puntos: 12
proyecto modular zf

Hola:

Decidí dividir en módulos un proyecto, y me generó una carpeta /modules dentro de la cual tiene /default, /login y /admin, el controlador de login que llama al fomulario me emite un mensaje que dice quen o exite la clase, realice las pruebas del nombre de la clase del formulario con lo siguiente:
Código PHP:
Ver original
  1. class Application_Module_Login_Form_LoginForm extends Zend_Form {
  2. ...
  3. class Module_Login_Form_LoginForm extends Zend_Form {
  4. ....
  5. class Form_LoginForm extends Zend_Form {
  6. ...
obviamente llamando con el mismo nombre desde el controlador
Código PHP:
Ver original
  1. public function getForm(){
  2.         return new Application_Module_Login_Form_LoginForm ( array (
  3.             'action' => '/login/process',
  4.             'method' => 'post'
  5.         ) );
  6.     }
En application.ini tengo definido
Cita:
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.frontController.params.prefixDefaultModu le = "1"
resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/"
la estructura para los formulario de mi login es la siguiente:
Application
-----modules
-----------login
---------------controller
-------------------IndexController.php
---------------forms
-------------------LoginForm.php

que debo hacer para que el formulario sea reconocido por el controller.
  #2 (permalink)  
Antiguo 04/04/2013, 11:57
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: proyecto modular zf

El nombre de la clase debe tener por prefijo el modulo, para el formulario del modulo login seria Login_Form_LoginForm

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #3 (permalink)  
Antiguo 04/04/2013, 14:27
 
Fecha de Ingreso: enero-2010
Mensajes: 491
Antigüedad: 14 años, 10 meses
Puntos: 12
Respuesta: proyecto modular zf

hice la prueba cambiando el prefijo, aún asi no resuelvo el problema, este tema fue tratado antes, sin embargo no puedo adpatar la solución a mi problema, inicialmente tenia esto en bootstrap:
Código PHP:
    protected function _initViewHelpers(){
         
$this->bootstrap('layout');
         
$layout $this->getResource('layout');
         
$view $layout->getView();
        
$view->doctype('XHTML1_STRICT');
        
$view->headMeta()->appendHttpEquiv('Content-Type''text/html;charset=utf-8');
        
$view->headMeta()->appendHttpEquiv('Cache-Control''no-cache');
        
$view->headTitle()->setSeparator(' - ');
        
$view->headTitle('BCBTram');
        
Zend_Session::start();
    } 
y lo he cambiado por esto:
Código PHP:
    protected function _initViewHelpers(){
         
$this->bootstrap('view');
         
$layout $this->getResource('view');
         
$view $layout->getView();
        
$view->doctype('XHTML1_STRICT');
        
$view->headMeta()->appendHttpEquiv('Content-Type''text/html;charset=utf-8');
        
$view->headMeta()->appendHttpEquiv('Cache-Control''no-cache');
        
$view->headTitle()->setSeparator(' - ');
        
$view->headTitle('BCBTram');
        
Zend_Session::start();
    } 
ahora me sale el siguiente error:
Cita:
Fatal error: Uncaught exception 'Zend_Application_Bootstrap_Exception' with message 'Resource matching "view" not found' in C:\xampp\php\library\Zend\Application\Bootstrap\Bo otstrapAbstract.php:694 Stack trace: #0 C:\xampp\php\library\Zend\Application\Bootstrap\Bo otstrapAbstract.php(629): Zend_Application_Bootstrap_BootstrapAbstract->_executeResource('view') #1 C:\xampp\php\library\Zend\Application\Bootstrap\Bo otstrapAbstract.php(586): Zend_Application_Bootstrap_BootstrapAbstract->_bootstrap('view') #2 C:\xampp\htdocs\gdbcb\application\Bootstrap.php(22 ): Zend_Application_Bootstrap_BootstrapAbstract->bootstrap('view') #3 C:\xampp\php\library\Zend\Application\Bootstrap\Bo otstrapAbstract.php(669): Bootstrap->_initViewHelpers() #4 C:\xampp\php\library\Zend\Application\Bootstrap\Bo otstrapAbstract.php(622): Zend_Application_Bootstrap_BootstrapAbstract->_executeResource('viewhelpers') #5 C:\xampp\php\library\Zend\Application\Bootstrap\Bo otstrapAbstract.php(586): Zend_Application_Bootstrap_BootstrapAbstract->_bootstrap(NULL) #6 C in C:\xampp\php\library\Zend\Application\Bootstrap\Bo otstrapAbstract.php on line 694
estoy seguro que es un problema de helpers pero aun no le he podido dar solución
  #4 (permalink)  
Antiguo 04/04/2013, 14:43
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: proyecto modular zf

mmm, no veo la relación entre el problema inicial y esto que comentas, lo del view resource es porque no lo tienes definido en el application.ini, basta con agregarlo

application.ini
Código INI:
Ver original
  1. resources.view.doctype = "HTML5"
__________________
http://es.phptherightway.com/
thats us riders :)
  #5 (permalink)  
Antiguo 04/04/2013, 15:25
 
Fecha de Ingreso: enero-2010
Mensajes: 491
Antigüedad: 14 años, 10 meses
Puntos: 12
Respuesta: proyecto modular zf

agregue en applitation.ini pero aun no soluciono el problema.

Existe algun problema si en /modules/login/controllers/ defino IndexController.php o debe ser LoginController.php, por que cuando cambio estos nombres por en el caso del primero me emite este mensaje:

Cita:
Fatal error: Class 'Login_Form_LoginForm' not found in C:\xampp\htdocs\gdbcb\application\modules\login\co ntrollers\IndexController.php on line 17
y en el caso de LoginController.php este otro:
Cita:
Fatal error: Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller class ("Default_ErrorController")' in C:\xampp\php\library\Zend\Controller\Dispatcher\St andard.php:365 Stack trace: #0 C:\xampp\php\library\Zend\Controller\Dispatcher\St andard.php(275): Zend_Controller_Dispatcher_Standard->loadClass('ErrorController') #1 C:\xampp\php\library\Zend\Controller\Front.php(954 ): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) #2 C:\xampp\php\library\Zend\Application\Bootstrap\Bo otstrap.php(97): Zend_Controller_Front->dispatch() #3 C:\xampp\php\library\Zend\Application.php(366): Zend_Application_Bootstrap_Bootstrap->run() #4 C:\xampp\htdocs\gdbcb\public\index.php(26): Zend_Application->run() #5 {main} Next exception 'Zend_Controller_Exception' with message 'Invalid controller class ("Default_ErrorController")#0 C:\xampp\php\library\Zend\Controller\Dispatcher\St andard.php(275): Zend_Controller_Dispatcher_Standard->loadC in C:\xampp\php\library\Zend\Controller\Plugin\Broker .php on line 336
  #6 (permalink)  
Antiguo 04/04/2013, 15:58
 
Fecha de Ingreso: enero-2010
Mensajes: 491
Antigüedad: 14 años, 10 meses
Puntos: 12
Respuesta: proyecto modular zf

encontre esto , pues agregando un Bootstrap.php en la raiz de cada modulo cargará los formularios.

Respecto al IndexController.php y LoginController.php, creo que si es diferente por que ami me busca la vista de cada controlador.
  #7 (permalink)  
Antiguo 11/04/2013, 16:34
 
Fecha de Ingreso: abril-2010
Ubicación: Lima-Peru
Mensajes: 94
Antigüedad: 14 años, 7 meses
Puntos: 2
Respuesta: proyecto modular zf

Hola:
efectivamente debes añadir un bootstrap.php en cada módulo con un contenido similar a:

Código HTML:
class NombreModulo_Bootstrap extends Zend_Application_Module_Bootstrap
{}
Saludos,

Etiquetas: modular, proyecto
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 04:11.