Symfony2 で別のサービスからデータを注入してサービスを構成することは可能ですか? たとえば、別のサービスでゲッターを呼び出すことによってですか?
私の特定のケースでは、翻訳可能なエンティティ フィールドを処理できる (再利用可能な) サービスを作成しています。このためには、アプリケーションで利用可能なロケールのリストが必要です。ロケールでも機能する他のバンドルをいくつか見てきましたが、それらは常に構成からの静的配列を使用します。例えば:
a2lix_translation_form:
locales: [en, fr, nl]
この構成は通常、バンドル構成を介してコンストラクターパラメーターまたはセッターの形式でサービスにマッピングされます。例えば:
class SomeService {
function __construct(array $locales) { ... }
// or
function setLocales(array $locales) { ... }
}
しかし、私の場合、利用可能なロケールのリストは常に静的であるとは限らず、多くの場合データベースから取得されます。配列を返すLocale
メソッドを使用してアプリケーションにサービスを作成しました。getLocales
しかし、それを必要とするサービスにその配列をどのように取得すればよいでしょうか?
ロケールのリストを必要とする私が作成しているサービスは、別の再利用可能なバンドルに分割されています。Locale
そのサービスはアプリケーションに固有のものであり、作成しているバンドルではないため、サービスを直接注入したくありません。バンドルのユーザーが、ロケールの静的リストを提供したり、すべてのロケールを持つサービスを参照したりできるようにしたいと考えています。