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