问题
I’m writing from Argentina, forgive my English little. I’m having some problems with modules ZfcUser
and zfcuserDoctrineORM
. I need to integrate them into my project. I’m working with Zend framework 2 , doctrine 2.3 and postgreSQL and this is the first time I work with these tools. For that reason, there are many things that I don’t dominate well, I have all the modules included in my /config/application.config.php
and my connection is configured in my database in /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', ), ), );
In order to map my database I made use of annotations with doctrine and I have my own entity user generated in my module.
I added the configuration archives zfcuser.global.php
and zfcuserdoctrineorm.global.php
in my autoload directory but I don’t know how to configure them so that the archives recognize my entity.
Into 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', ), ), );
Into 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' ) ) ) ), );
I saw that module zfcuserDoctrineORM
works with XML.
Can the module be adapted to work with annotations? If this is possible, how do I adapt my entity user to this module? Which archives should I modify ?
回答1:
You don't need to adapt ZfcUserDoctrineORM to use annotation mappings. DoctrineORMModule supports mixed mappings natively (it's your choice to decide which entities to map with which drivers). About ZfcUser's configuration, I personally didn't modify it at all (I only did some overrides on what ZfcUserDoctrineORM does).
- remove
config/autoload/zfcuser.global.php
(you don't need it) - remove
config/autoload/zfcuserdoctrineorm.global.php
in the module defining your user entity, use following if you want to override the annotation driver of ZfcUserDoctrineOrm (assuming the file is in
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, ),
This should work for the 0.1.x
versions of ZfcUserDoctrineORM
回答2:
The solution from Ocramius worked for me with a few modifications (big thank you!),
First, there seems to be a bug in the latest release of doctrine-module (I got an error saying 'when requiring zfcuser_doctrine_em, the service cannot be found' ), so I had to revert to 0.7 instead. I have attached my composer.json config below,
"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.*",
The next thing is, I had to keep my zfcuser.global.php with the following config option,
'user_entity_class' => 'Application\Entity\User',
This is required if you want to override the default entity with your own one.
Hope this helps.
来源:https://stackoverflow.com/questions/13795021/how-to-adapt-modules-zfcuser-zfcuserdoctrineorm-in-my-project-with-doctrine-2-u