2017-02-07 1 views
1

私が書いた複数のバンドルで同じ問題を処理していることがわかりました。Symfony Bundle:Doctrineマッピングのパスを構築するために__DIR__を使用することを避ける方法

私のBundleNameBundleクラスでは、Doctrineのマッピングをロードするためのパスを作成する必要があります。

/** 
* {@inheritdoc} 
*/ 
public function build(ContainerBuilder $container) 
{ 
    parent::build($container); 

    $modelDir = realpath(__DIR__ . '/Resources/config/doctrine/mappings'); 
    $mappings = [ 
     $modelDir => 'SerendipityHQ\Bundle\QueuesBundle\Model', 
    ]; 

    $ormCompilerClass = DoctrineOrmMappingsPass::class; 
    if (class_exists($ormCompilerClass)) { 
     $container->addCompilerPass(
      $this->getYamlMappingDriver($mappings) 
     ); 
    } 

    $container->addCompilerPass(new DaemonDependenciesPass()); 
} 

完全なコードhere

は、私のような何かをするこれを行うにしてください。

私は__DIR__を使って、マッピングがあるフォルダへのパスを取得します。

Sensio Insightsは「Absolute path constants DIR and FILE should not be used」と警告しています。

この問題を解決するにはどうすればよいですか?マッピングのパスを構築する別の方法がありますか?

+0

@Gordonと同じ結果を返します。これは、あなたがリンクしている質問に記載されている解決策が私の場合には当てはまらないため、重複していません。 「$ container-> get( 'kernel') - > locateResource( '@ QueuesBundle/Resources/config/doctrine/mappings') 'を使用すると、「存在しないサービスをリクエストしました」というエラーが発生するので、カーネル"。"。このソリューションでは、コントローラのリソースの場所を参照していますが、バンドルの初期化ファイルにあります。このコンテキストでは、 'kernel'はまだ利用できません。重複フラグを削除してください。 – Aerendir

+1

[OK]を、私はまだ参考にこれをリンクします:http://stackoverflow.com/questions/34331370/why-absolute-path-constants-dir-and-file-should-not-be-used-in- symfony – Gordon

答えて

1

$this->pathを使用できます。 __DIR__

+0

私は '$ this-> getPath()'を使用しました。私はゲッターの使用を推奨します!答えてくれてありがとう! – Aerendir

関連する問題