6

我是从阿根廷写的,请原谅我的英语小。我在模块ZfcUserzfcuserDoctrineORM. 我需要将它们集成到我的项目中。我正在使用 Zend 框架 2、教义 2.3 和 postgreSQL,这是我第一次使用这些工具。出于这个原因,有很多事情我不能很好地掌握,我的所有模块都包含在/config/application.config.php我的数据库中,我的连接配置在我的数据库中/config/autoload/local.php

本地.php

    返回数组(
      '教义' => 数组(
        '连接' => 数组(
            'orm_default' =>数组(
                'driverClass' => 'Doctrine\DBAL\Driver\PDOPgSql\Driver',
                    '参数' => 数组(
                        '主机' => '本地主机',
                        '端口' => '5432',
                        '用户' => 'postgres',
                        '密码' => 'postgres',
                        'dbname' => 'ministerio',
                    )
                )
            )
        ),
    );

应用程序.config.php

    返回数组(
      '模块' => 数组(
        '应用',
        '教义模块',
        'DoctrineORMModule',
        'Reeser', // 我的模块名称
        'ZfcBase',
        'Zfc用户',
        'ZfcUserDoctrineORM',  

    ),
    'module_listener_options' =>数组(
          'config_glob_paths' =>数组(
              'config/autoload/{,*.}{global,local}.php',
        ),
        'module_paths' =>数组(
             '。/模块',
             '。/小贩',
          ),
       ),
    );

为了映射我的数据库,我使用了带有教义的注释,并且在我的模块中生成了我自己的实体用户。

我添加了配置档案zfcuser.global.phpzfcuserdoctrineorm.global.php在我的自动加载目录中,但我不知道如何配置它们以便档案识别我的实体。

进入zfcuser.global.php

    'zend_db_adapter' => 'Zend\Db\Adapter\Adapter', // 应该注释掉吗?

    'user_entity_class' => 'Reeser\Entity\User',

    'login_redirect_route' => 'Reeser/index/index.phtml',

    返回数组(
         'zfcuser' => $settings, // 我如何配置这段代码?
         'service_manager' =>数组(     
         '别名' => 数组(
         'zfcuser_zend_db_adapter' => (isset($settings['zend_db_adapter'])) ?
         $settings['zend_db_adapter']: 'Zend\Db\Adapter\Adapter',
            ),
         ),
    );  

进入zfcuserdoctrineorm.global.php

    返回数组(
       '教义' => 数组(
          '驱动程序' => 数组(
             'zfcuser_driver' =>数组(
                 'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver',
                 '缓存' => '数组',
                 '路径' => 数组(__DIR__ .'/../src/Reeser/Entity')
            ),

            'orm_default' =>数组(
                '驱动程序' => 数组(
                    'ZfcUser\Entity' => 'zfcuser_driver'
                )
            )
         )
      ),
    );

我看到该模块zfcuserDoctrineORM适用于 XML。该模块可以适应注释吗?如果这是可能的,我如何使我的实体用户适应这个模块?我应该修改哪些档案?

4

2 回答 2

6

您无需调整ZfcUserDoctrineORM即可使用注释映射。DoctrineORMModule 原生支持混合映射(您可以选择决定哪些实体与哪些驱动程序进行映射)。关于ZfcUser的配置,我个人根本没有修改它(我只是对 ZfcUserDoctrineORM 做了一些覆盖)。

  1. 删除config/autoload/zfcuser.global.php(你不需要它)
  2. 消除config/autoload/zfcuserdoctrineorm.global.php
  3. 在定义用户实体的模块中,如果要覆盖 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.xZfcUserDoctrineORM

于 2013-02-08T21:03:10.953 回答
1

Ocramius 的解决方案对我进行了一些修改(非常感谢!),

首先,最新版本的学说模块中似乎有一个错误(我收到一个错误说'当需要 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', 如果你想用你自己的实体覆盖默认实体,这是必需的。

希望这可以帮助。

于 2013-05-09T22:26:00.080 回答