6

私はアルゼンチンから書いています、私の英語を少し許してください。モジュールZfcUserとに問題がありますzfcuserDoctrineORM。それらをプロジェクトに統合する必要があります。私はZendフレームワーク2、doctrine 2.3、postgreSQLを使用していますが、これらのツールを使用するのはこれが初めてです。そのため、私がうまく支配していないことがたくさんあります。すべてのモジュールが含まれて/config/application.config.phpおり、接続はデータベースで構成されています。/config/autoload/local.php

Local.php

    配列を返す
      'doctrine' => array(
        '接続'=>配列(
            'orm_default' => array(
                'driverClass' =>'Doctrine \ DBAL \ Driver \ PDOPgSql \ Driver'、
                    'params' => array(
                        'host' =>'localhost'、
                        'ポート'=>'5432'、
                        'user' =>'postgres'、
                        'パスワード'=>'postgres'、
                        'dbname' =>'ministerio'、
                    )。
                )。
            )。
        )、
    );

application.config.php

    配列を返す
      'モジュール'=>array(
        '応用'、
        'DoctrineModule'、
        'DoctrineORMModule'、
        'Reeser'、//モジュールの名前
        'ZfcBase'、
        'ZfcUser'、
        'ZfcUserDoctrineORM'、  

    )、
    'module_listener_options' => array(
          'config_glob_paths' => array(
              'config / autoload / {、*。} {global、local} .php'、
        )、
        'module_paths' => array(
             './module'、
             '。/ベンダー'、
          )、
       )、
    );

データベースをマッピングするために、Doctrineを使用してアノテーションを使用し、モジュールで独自のエンティティユーザーを生成しました。

構成アーカイブzfcuser.global.phpzfcuserdoctrineorm.global.phpautoloadディレクトリを追加しましたが、アーカイブがエンティティを認識するように構成する方法がわかりません。

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' => array(     
         'エイリアス'=>array(
         'zfcuser_zend_db_adapter' =>(isset($ settings ['zend_db_adapter']))?
         $ settings ['zend_db_adapter']:'Zend \ Db \ Adapter \ Adapter'、
            )、
         )、
    );  

zfcuserdoctrineorm.global.php

    配列を返す
       'doctrine' => array(
          'ドライバー'=>array(
             'zfcuser_driver' => array(
                 'class' =>'Doctrine \ ORM \ Mapping \ Driver \ AnnotationDriver'、
                 'キャッシュ'=>'配列'、
                 'paths' => array(__DIR__。'/../src/Reeser/Entity')
            )、

            'orm_default' => array(
                'ドライバー'=>array(
                    '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.xバージョンで機能するはずですZfcUserDoctrineORM

于 2013-02-08T21:03:10.953 に答える
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', これは、デフォルトのエンティティを独自のものでオーバーライドする場合に必要です。

お役に立てれば。

于 2013-05-09T22:26:00.080 に答える