コンパウンドとinherit_dataオプションがtrueに設定された埋め込みフォームがあります。Symfony2コンパウンドフォーム、フィールドにエラーを関連付ける
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->setErrorBubbling(false);
$builder->add('date_start', 'date', array(
'label' => 'form.date_start.label',
'widget' => 'single_text',
'required' => false,
'group' => ['event', 'dates']
));
$builder->add('date_end', 'date', array(
'label' => 'form.date_end.label',
'widget' => 'single_text',
'required' => false,
'group' => ['event', 'dates']
));
$builder->add('time_zone', 'alternate_timezone', [
'label' => 'form.timezone.label',
'field_help' => 'form.timezone.help',
'empty_value' => 'form.timezone.empty_value',
'required' => false,
'group' => ['event', 'dates']
]);
}
/**
* {@inheritdoc}
*/
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults([
'label' => false,
'compound' => true,
'inherit_data' => true
]);
}
フィールドにエラーを関連付けることはできません。このフォームのエラーは、フィールドではなく親のフォームに表示されます。私はdocで、error_bubblingはformがcompoundでない限りfalseであることがわかりました。
フィールドに関連するエラーを持つ複合フォームのソリューションは何ですか?あなたは化合物の関係で各エンティティの検証制約を定義することができますし、検証中に生成されたすべてのエラーは、エラーが発生したフォーム要素の近くに/上に表示されます -
はsymfony中の化合物の形であなたに
私は継承されている私のフォームのフィールドで、この問題を持っています。検証ルーチンで継承されたフォームの名前をターゲットにすることはできません。エラーは常にルートフォームに泡立ちます。 error_bubblingや他の設定を変更することは私にとっては効果がありませんでした。 – lifo