我是在阿根廷写的,原谅我的英语很少。我在模块ZfcUser
和zfcuserDoctrineORM
方面遇到了一些问题。我需要将它们集成到我的项目中。我正在使用Zend framework 2,doctrine 2.3和postgreSQL,这是我第一次使用这些工具。出于这个原因,有许多事情我不能很好地支配,我的/config/application.config.php
中包含了所有模块,并且我的数据库中/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', ), ), );
为了映射我的数据库,我使用了带有教义的注释,我在我的模块中生成了自己的实体用户。
我在自动加载目录中添加了配置存档zfcuser.global.php
和zfcuserdoctrineorm.global.php
,但我不知道如何配置它们以便存档识别我的实体。
进入 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', ), ), );
进入 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' ) ) ) ), );
我看到模块zfcuserDoctrineORM
适用于XML。
模块是否可以适用于注释?如果可以,我如何调整我的实体用户到这个模块?我应该修改哪些档案?
答案 0 :(得分:6)
您无需调整ZfcUserDoctrineORM即可使用注释映射。 DoctrineORMModule本机支持混合映射(您可以选择决定使用哪些驱动程序映射哪些实体)。关于ZfcUser的配置,我个人根本没有对它进行修改(我只对ZfcUserDoctrineORM所做的事做了一些覆盖。)
config/autoload/zfcuser.global.php
(您不需要它)config/autoload/zfcuserdoctrineorm.global.php
在定义用户实体的模块中,如果要覆盖ZfcUserDoctrineOrm的注释驱动程序(假设文件位于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,
),
这适用于0.1.x
ZfcUserDoctrineORM
版本
答案 1 :(得分:1)
Ocramius的解决方案为我做了一些修改(非常感谢!),
首先,在最新版本的doctrine-module中似乎存在一个错误(我收到一个错误,说'当需要zfcuser_doctrine_em时,无法找到服务'),所以我不得不恢复到0.7。我在下面附上了我的composer.json配置,
"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.*",
接下来的事情是,我必须使用以下配置选项保留我的zfcuser.global.php,
'user_entity_class' => 'Application\Entity\User',
如果要使用自己的实体覆盖默认实体,则必须执行此操作。
希望这会有所帮助。