1. ホーム
  2. php

[解決済み] symfony2 のバンドルに関連するファイルにアクセスする

2023-06-12 22:21:31

質問

Symfony2アプリのルーティング設定において、以下のようなファイルを参照することができます。

somepage:
    prefix: someprefix
    resource: "@SomeBundle/Resources/config/config.yml"

コントローラまたは他のPHPコード内でバンドルに相対的にファイルにアクセスする方法はありますか?特に、ファイルをパースするためにSymfonyComponentのParserオブジェクトを使おうとしていますが、そのファイルを絶対的に参照したくありません。本質的に、私はこれをしたい。

$parser = new Parser();
$config = $parser->parse( file_get_contents("@SomeBundle/Resources/config/config.yml") );

私は、SymfonyのIntelligentComponentのIntelligentFinderクラスをチェックアウトしましたが、私はそれが私が探しているものだとは思わないです。何かアイデアはあるか?または、私はこれを行うためのより良い方法を完全に見落としているのでしょうか?

どのように解決するのですか?

実は、これに使えそうなサービスが、カーネル( $this->get('kernel') ). というメソッドを持っています。 locateResource() .

例えば

$kernel = $container->getService('kernel');
$path = $kernel->locateResource('@AdmeDemoBundle/path/to/file/Foo.txt');