Ver Mensaje Individual
  #8 (permalink)  
Antiguo 04/01/2012, 13:24
Avatar de punk567
punk567
 
Fecha de Ingreso: septiembre-2006
Ubicación: Montevideo
Mensajes: 265
Antigüedad: 18 años, 5 meses
Puntos: 5
Respuesta: Estructura del proyecto

Bien, durante varias horas estuve buscando algo de información al tema y no encontré algo concreto o un ejemplo completo, más que nada cosas aisladas. En Github hay muchos ejemplos, bastante complejos, pero me pareció que todos manejaban el tema de manera distinta. Con lo que intenté hacer mas o ménos algo así,

Un repositorio, una entidad y un servicio.. que están en application/modules/catalogo/models/
y cada una tiene
namespace Repository;
namespace Entity;
namespace Service;

en el Controller dentro del mismo módulo, "llamo" a service , así

$this->productService = $this->_helper->Service('Service\ProductoService');

con un Action Helper, que esta en 'library' MiProyecto/....


y devuelve este error :

Fatal error: Class 'Service\ProductoService' not found in ..library\MiProyecto\Controller\Action\Helper\Serv ice.php


$this->productService = $this->_helper->Service('\MiProyecto\Domain\Catalogo\Service\Prod uctoService');

eso funcionaba, porque estaba todo en MiProyecto\Domain\Catalogo

por la ayuda me doy cuenta que, en 'library' no se ubica el modelo, que es relativo a cada módulo. y que va dentro de 'application'



En el root de models van los mappers, eso tiene que ver con el Namespace, o autoload?

tenía esto en el Boostrap del módulo, pero no logré corregirlo


Código:
    protected function _initAutoload()
    {
        $autoloader = new Zend_Application_Module_Autoloader(array(
            'namespace' => 'Catalogo',
            'basePath' => dirname(__FILE__) . '/modules/catalogo',
            ));
            return $autoloader;
    }
    
  public function initResourceLoader(){
        $resourceLoader = parent::getResourceLoader();
        $resourceLoader->addResourceTypes(
            array(
                'services' => array(
                    'namespace' => 'Service',
                    'path' => 'models/services'
                ),
                'entities' => array( //if you also use doctrine2 orm
                    'namespace' => "Entity",
                    'path' => 'models/entities'
                ),
                'repositories' => array(
                    'namespace' => 'Repository',
                    'path' => 'models/repositories'
                )
            )
        );
    }


Saludos

Última edición por punk567; 04/01/2012 a las 13:31