次のような再利用可能なバンドルに FormType があるとします。
/**
* @Service("acme_core_purchase.form.add_to_basket")
* @FormType
*/
class AddToBasketType extends AbstractType
{}
私のコントローラーでは、私が必要とすることをするためにそれを注入します:
/** @Inject("acme_core_purchase.form.add_to_basket") */
protected $add_to_basket_form;
特定のプロジェクトで、そのフォームを拡張していくつかのフィールドを追加したい場合、注釈を使用してこれを行うにはどうすればよいでしょうか?
class AddToBasketType extends BaseAddToBasketType
{}
同じサービス名でフォームを作成することはできませんが、それは機能しません/意味がありません-私が知る限り、割り当ては AppKernel::registerBundles で設定された優先度に従っていません。とにかく、これは概念的に欠陥があると思います。
サービス名は変更できますが、それを使用したすべての場所に別のサービスを挿入する必要があります。これには、これらすべての拡張が含まれます。
サービス名をパラメーターに保存し、代わりにそれをどこにでも挿入できます。そうすれば、正しいサービス名をどこにでも挿入できますが、サービスを取得できるようにコンテナーを挿入する必要もあります。
私は必要に応じて後者を行ってきましたが、確かに良い方法はありますか? または少なくとも、あるはずです。