annotations - ¿Cómo adaptar los módulos ZfcUser/zfcuserDoctrineORM en mi proyecto con doctrine 2 usando anotaciones?
(2)
Estoy escribiendo desde Argentina, perdona mi inglés poco. Tengo algunos problemas con los módulos ZfcUser
y zfcuserDoctrineORM
. Necesito integrarlos en mi proyecto. Estoy trabajando con Zend framework 2, doctrine 2.3 y postgreSQL y esta es la primera vez que trabajo con estas herramientas. Por esa razón, hay muchas cosas que no domino bien, tengo todos los módulos incluidos en mi /config/application.config.php
y mi conexión está configurada en mi base de datos en /config/autoload/local.php
Local.php
return array( ''doctrine'' => array( ''connection'' => array( ''orm_default'' =>array( ''driverClass'' => ''Doctrine/DBAL/Driver/PDOPgSql/Driver'', ''params'' => array( ''host'' => ''localhost'', ''port'' => ''5432'', ''user'' => ''postgres'', ''password'' => ''postgres'', ''dbname'' => ''ministerio'', ) ) ) ), );
application.config.php
return array( ''modules'' => array( ''Application'', ''DoctrineModule'', ''DoctrineORMModule'', ''Reeser'', // Name of my module ''ZfcBase'', ''ZfcUser'', ''ZfcUserDoctrineORM'', ), ''module_listener_options'' =>array( ''config_glob_paths'' =>array( ''config/autoload/{,*.}{global,local}.php'', ), ''module_paths'' =>array( ''./module'', ''./vendor'', ), ), );
Para mapear mi base de datos hice uso de anotaciones con doctrina y tengo mi propio usuario de entidad generado en mi módulo.
zfcuser.global.php
archivos de configuración zfcuser.global.php
y zfcuserdoctrineorm.global.php
en mi directorio de autocarga, pero no sé cómo configurarlos para que los archivos reconozcan mi entidad.
En zfcuser.global.php
''zend_db_adapter'' => ''Zend/Db/Adapter/Adapter'', // should this comment it? ''user_entity_class'' => ''Reeser/Entity/User'', ''login_redirect_route'' => ''Reeser/index/index.phtml'', return array( ''zfcuser'' => $settings, // How I configure this code? ''service_manager'' =>array( ''aliases'' => array( ''zfcuser_zend_db_adapter'' => (isset($settings[''zend_db_adapter''])) ? $settings[''zend_db_adapter'']: ''Zend/Db/Adapter/Adapter'', ), ), );
En zfcuserdoctrineorm.global.php
return array( ''doctrine'' => array( ''driver'' => array( ''zfcuser_driver'' =>array( ''class'' => ''Doctrine/ORM/Mapping/Driver/AnnotationDriver'', ''cache'' => ''array'', ''paths'' => array(__DIR__ .''/../src/Reeser/Entity'') ), ''orm_default'' =>array( ''drivers'' => array( ''ZfcUser/Entity'' => ''zfcuser_driver'' ) ) ) ), );
Vi que el módulo zfcuserDoctrineORM
funciona con XML. ¿Se puede adaptar el módulo para trabajar con anotaciones? Si esto es posible, ¿cómo puedo adaptar el usuario de mi entidad a este módulo? ¿Qué archivos debo modificar?
La solución de Ocramius funcionó para mí con algunas modificaciones (¡muchas gracias!)
En primer lugar, parece haber un error en la última versión de doctrine-module (recibí un error que decía ''when require zfcuser_doctrine_em, no se puede encontrar el servicio''), así que tuve que volver a 0.7 en su lugar. Adjunté mi configuración de composer.json a continuación,
"doctrine/dbal": "2.3.*",
"doctrine/common": "2.3.*",
"doctrine/doctrine-module": "0.7.*",
"doctrine/doctrine-orm-module": "0.7.*",
"doctrine/orm": "2.3.*",
"zf-commons/zfc-user": "0.1.*",
"zf-commons/zfc-user-doctrine-orm": "0.1.*",
Lo siguiente es que tuve que guardar mi zfcuser.global.php con la siguiente opción de configuración, ''user_entity_class'' => ''Application/Entity/User'',
esto es obligatorio si desea anular la entidad predeterminada con la suya propia.
Espero que esto ayude.
No necesita adaptar ZfcUserDoctrineORM para usar asignaciones de anotación. DoctrineORMModule admite mapeos mixtos de forma nativa (es su elección decidir qué entidades asignar con qué controladores). Acerca de la configuración de ZfcUser , personalmente no la modifiqué en absoluto (solo hice algunas modificaciones sobre lo que hace ZfcUserDoctrineORM).
- eliminar
config/autoload/zfcuser.global.php
(no lo necesita) - eliminar
config/autoload/zfcuserdoctrineorm.global.php
en el módulo que define su entidad de usuario, use following si desea sobrescribir el controlador de anotación de ZfcUserDoctrineOrm (suponiendo que el archivo se encuentre en
YourModule/config/module.config.php
):// entity mappings ''doctrine'' => array( ''driver'' => array( ''zfcuser_entity'' => array( // customize path ''class'' => ''Doctrine/ORM/Mapping/Driver/AnnotationDriver'', ''paths'' => array(__DIR__ . ''/../src/YourModule/Entity''), ), ''orm_default'' => array( ''drivers'' => array( ''YourModule/Entity'' => ''zfcuser_entity'', ), ), ), ), // ZfcUser specific config ''zfcuser'' => array( ''user_entity_class'' => ''YourModule/Entity/User'', ''enable_default_entities'' => false, ),
Esto debería funcionar para las versiones ZfcUserDoctrineORM
de ZfcUserDoctrineORM