2017-07-07 4 views
1

をバンドルアップロードに渡す私はsymfonyの3.3symfonyの:どのように独自のパス

を使用しています私は自分のアプリケーションにvendor/に作曲を経由して、インストールバンドルを作成しました。私は依存性注入を介してそれに注入するいくつかのymlファイルを必要とするこのバンドルを持っています。これまでのところすべてがOKです。しかし、私はまたこのバンドルの中にすでに1つのymlファイルを持っており、このバンドルはこの(自分の)ファイルのパスを知る必要があります。

現在、私はそれがうまく動作しますが、私はそれが適切な解決策だとは思わない、私のバンドルのクラスの一つ

protected const LOCAL_FILE = __DIR__.'/../Resources/translations/ru.yml'; 

でこれを持っています。私はこのクラスに%kernel.root_dir%を渡そうとしますが、それでも私は全体のパスを推測することはできません。

私はそれを最善の方法でやるべきでしょうか?

UPDATE:あなたはSymfony\Component\HttpKernel::locateResource()メソッドを使用している場合がありますlocateResource

protected const LOCAL_FILE = '@MyBundle/Resources/translations/ru.yml'; 
    .... 
    .... 
    $this->kernel->locateResource(self::LOCAL_FILE) 
+1

カーネルの 'locateResource'メソッドを確認してください。 http://api.symfony.com/3.3/Symfony/Component/HttpKernel/KernelInterface.html#method_locateResource – zerkms

+0

@zerkmsこのメソッドにアクセスするには、 'services.yml'のクラスのコンストラクタに何を渡しますか? – user7808407

+1

'@カーネル'? ........ – zerkms

答えて

1

my.translator: 
     ... 
     calls: 
      - method: configure 
      arguments: 
       ... 
       - '@kernel' 

および一部:私は結果がこの方法を次のように呼び出します示唆したものをzerkms作られました。

そして、カーネルオブジェクトは、コンテナ内の@kernel IDで利用できます。

+0

それは働いた。私は自分の投稿を更新して、どのように動作させたのかを表示しました – user7808407

+0

@ user7808407あなたは 'locateResource'に何を渡しましたか? – zerkms

+0

感謝しました。良い一日を – user7808407

関連する問題