すべてのフォーム要素に対してカスタムヘルパーメッセージ(htmlデータ属性)を実装したいと思います。ヘルパーメッセージはYAML langファイル(messages.en.yml)で定義されていますが、すべてのフォーム要素にヘルパーメッセージがあるわけではありません。symfony 3は、翻訳メッセージに基づいてフォームフィールドに属性を動的に追加します
問題は、Symfony FormTypeまたはSymfony Formイベントを使用して行うことができないということです。
Formイベントをサービスとして作成し、トランスレータサービスを挿入し、そこからデータを操作してヘルパークラスを追加することを考えていましたが、どのようにして実例が見つかりませんでした。
私が考えていた他のオプションは、Traitを使用してトランスレータサービスを特性に注入し、そこからコードを開発することですが、それほど適切ではないと思います。
誰かが自分の経験を共有し、この特定の問題を解決する方法を手がかりにすることはできますか?あなたがregistering the form as a serviceとフォームにYAML configurationを注入することによって行うことができます
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('title', TextType::class, array(
'label_format' => 'admin.intro.form.%name%',
'attr' => [
'data-helper' => 'Please enter title'
]
)
)
->add('content', TextareaType::class, array(
'label_format' => 'admin.intro.form.%name%',
'required' => false,
'attr' => [
'class' => 'mceEditor'
]
)
)
->add('isEnabled', CheckboxType::class, array(
'label_format' => 'admin.intro.form.%name%',
'required' => false,
)
ありがとうございます。すべてのフォームに同じ設定を適用できますか? – user2496520
このようなアプリケーションが必要な場合は、Symfonyの翻訳コンポーネントを見て、ベストプラクティスを適用することをお勧めします。 http://symfony.com/doc/current/translation.html – Nomad145
これはあなたの問題を実際に解決するはずです。 Translation Twig Extensionを登録し、Twigフォームのテーマに直接翻訳を追加することができます。このソリューションでは、すべてのフォームが翻訳され、翻訳者を注入する必要はありません。 http://symfony.com/doc/current/components/form.html#translation – Nomad145