他に2つの質問があることは知っていますが、誰も私が求めるものを解決する人はいないと思います。symfony 3.0でサービスとしてフォームを定義する
Symfony 2.8には、サービスとして定義されたフォームに「エイリアス」をタグ付けすることについて非推奨の注意があります。フォームを取得するために「createForm」に渡すことができます。
私が間違っているのであれば、私を修正してください今はエイリアスタグなしでサービスを定義する必要があります。
#src/MyBundle/Resources/config/services.yml
my.form.as.service:
class: MyBundle\Form\Type\MyFormType
arguments: ["@doctrine.orm.entity_manager",%myparameter1%]
tags: { - name: form.type }
とコントローラで:
$form = $this->createForm('my.form.as.service');
しかし、これは私に与えますformNameはgetName関数で 'my_name'を返し、フォームがFQCNを受け取ると予想します。
動作し、githubのsymfonyのメンバーでuse MyBundle\Form\Type\MyFormType;
...
$form = $this->createForm(MyFormType::class)
フォームコンポーネントは、すべての作業を行うことを言います...しかし、私はとseccondサービスを定義するために何をしたい場合:OK、コントローラにここに他の応答を以下に私が変更しました同じクラスですが、%parameter1%の代わりに別のパラメータを使用します。 2.8歳以上では、別のサービスを定義してその名前をcreateForm関数に渡すことができましたが、クラスを直接取得できるようになりました。 (私はそれが奇妙な、または不必要なことができるか、または...)知っている。
symfonyメンバーに:私はJaviereguiluzと一緒にいるので、この変更によりコードを書くことができ、フォームコンポーネントがあなたのサービスをどのように使用するか完全に制御することができなくなります。私たちのライブをとても複雑にするためにフォームエイリアスを削除する必要がありましたか?ありがとう!
ありがとうWouter、私は何かを言うためのパラメータを言ったが、もし私が望むのは、別のサービスを注入することですか? 3.0より前には、2つのフォームserviesを定義することができました。各サービスは注入が必要ですが、今は...同じフォームの2つのクラスを唯一のオプションとして作成していますか?はい、私は彼らがこのアップデートをあまり考えないと思うと思います... –
@JordiPuig私はあなたに一つのことを約束することができます、コアチームはすべての長所/短所の重さなしに大きな変化を起こさない。同じフォームタイプで注入されるさまざまなサービスの実際のユースケースがありますか? (あなたのフォームタイプはあまりにも多くの場合、データトランスフォーマー/マッパーやフォームリスナーのようなものが必要です) –
今は持っていませんが、それが起こる可能性はかなりあります。私はsymfony githubでこれについて多くの議論をしていました。私の日常的な仕事からは、この変更には何の利点もありませんでしたが、たくさんのコードを書き直さなければなりません...システムを本当に改善するか、それは "数行のコード"とaviod名の間違いを得ることだけでした。とにかく答えに感謝します。 –