如何使用注释教义2适应模块ZfcUser / zfcuserDoctrineORM在我的项目?(Ho

2019-08-03 18:46发布

我来自阿根廷写作,原谅我的英语不大。 我有一些问题与模块ZfcUserzfcuserDoctrineORM 。 我需要把它们融入我的项目。 我与Zend框架2,学说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.phpzfcuserdoctrineorm.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的。 可以在模块可适于与注释工作? 如果这是可能的,我怎么我的实体用户适应这个模块? 我应该修改的档案?

Answer 1:

你并不需要适应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.x版本ZfcUserDoctrineORM



Answer 2:

从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',如果你想用自己的一个覆盖默认的实体这是必需的。

希望这可以帮助。



文章来源: How to adapt modules ZfcUser/ zfcuserDoctrineORM in my project with doctrine 2 using annotations?