6

アプリケーションのモジュールで Zend Framework を使用しており、Doctrine 2 を同じ方法で統合することに興味があります。

モジュールには以下が含まれます。

  • コントローラー
  • モデル
  • ビュー
  • ヘルパー

Doctrine 2 の問題は、エンティティ ディレクトリとプロキシ ディレクトリが必要なことです。エンティティ ディレクトリをモジュール構造のモデル ディレクトリにしたいのですが、調査に基づいて解決策が見つかりませんでした。

現在、デフォルトのモジュールを使用すると、メタデータの実装は次のようになります。

$config->setMetadataDriverImpl($config->newDefaultAnnotationDriver(APPLICATION_PATH . '/modules/default/models'));

新しいモジュールを追加したい場合、たとえば「cms」としましょう。Doctrine でモデルを管理する方法がありません。

問題の解決策を持っている人はいますか?

4

3 に答える 3

4

数時間の作業の後、私は正しい解決策を思いつきました。Doctrineの\ORM\ ConfigurationクラスのnewDefaultAnnotationDriver、setProxyDir、およびsetProxyNamespaceメソッドは、配列パラメーターも受け取ることができることに注意してください。

そうは言っても、すべてのモジュールのモデルパスを持つ配列を渡す必要があり、それは機能します

于 2010-12-09T14:58:47.967 に答える
0

モジュールごとにブートストラップファイルを作成する場合

<?php
class User_Bootstrap extends Zend_Application_Module_Bootstrap
{
    protected function _initAutoload()
    {
        $autoloader = new Zend_Application_Module_Autoloader(array(
            'namespace' => 'User_',
            'basePath' => dirname(__FILE__) . '/modules/user',
            ));
            return $autoloader;
    }
}

これをデフォルトのブートストラップに入れて、デフォルトのモジュールモデルをロードします

protected function _initAutoload()
    {
        $autoloader = new Zend_Application_Module_Autoloader(array(
            'namespace' => 'Default_',
            'basePath' => dirname(__FILE__) . '/modules/default',
            ));
            return $autoloader;
    }

それはうまくいきます

于 2011-05-07T19:56:50.120 に答える
0

アプリケーションレベルのフォルダーにプロキシ(自動生成)があります。ディレクトリ構造は次のとおりです。

/project
    /application
        /domain
            /proxies
        /configs
        /modules
            /blog
                /controllers
                /views
                /domain
                    /entities
                    /services
                    /repositories
    /library
    /public
    /data
于 2011-01-04T04:55:22.570 に答える