annotations doctrine zfcuser

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).

  1. eliminar config/autoload/zfcuser.global.php (no lo necesita)
  2. eliminar config/autoload/zfcuserdoctrineorm.global.php
  3. 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