をエラーを追加します(TextTypeフィールドの位置)フィールドsymfonyのフォームイベントは私のシナリオは次のようである特定の分野に
これは、イベントリスナーを持つ形である:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add(
'maxRedemptionForDiscount',
ChoiceType::class,
[
'placeholder' => false,
'multiple' => false,
'choices' => [
true => 'discount.form_fields.set_max_redemptions',
false => 'discount.form_fields.unlimited',
],
'label' => 'discount.form_fields.max_redemption_for_discount',
'translation_domain' => 'entities',
'required' => false,
'error_bubbling' => true,
'attr' => [
'class' => 'maxRedemptionForDiscountSelect',
],
]
)->add(
'maxRedemptionForDiscountValue',
TextType::class,
[
'label' => 'discount.form_fields.set_max_redemptions',
'translation_domain' => 'entities',
'required' => false,
]
)->addEventListener(
FormEvents::PRE_SUBMIT,
[$this, 'onPreSubmit']
);
}
これはonPreSubmit関数である:
{{ form_row(form.maxRedemptionForDiscount) }}
<div id="maxRedemptionForDiscountValue">
{{ form_row(form.maxRedemptionForDiscountValue) }}
</div>
これは、フォーム上のエラーメッセージをレンダリングする:ここ
/**
* @param FormEvent $event
*/
public function onPreSubmit(FormEvent $event)
{
$data = $event->getData();
$form = $event->getForm();
if ($data['maxRedemptionForDiscount'] == 1) {
if ($data['maxRedemptionForDiscountValue'] == 0) {
$form->addError(new FormError('error message'));
}
}
$event->setData($data);
}
は小枝コードです。 しかし、私は特定のフィールドにエラーメッセージを表示したい。
これは動作しません:
$form->get('maxRedemptionForDiscountValue')->addError(new FormError('error message'));
私はこれをしようとすると、エラーメッセージが私のフォームの上部に消えますが、特定のフィールドの位置に表示されないでしょう。
私はここで間違っていますか?
[OK]を、感謝を編集する必要があります。私はあなたの解決策を試してみた私の質問に書いているように "$ form - > get( 'maxRedemptionForDiscountValue') - > addError(新しいFormError( 'エラーメッセージ'));"しかし、これは私のためには機能しません。これを使用すると、エラーはフォームの上部から削除され、特定のフィールドには表示されません。 – goldlife
@goldlife両方のソリューションを試しましたか?error_bubblingが削除され、特定のフィールドにエラーが追加されましたか? – DonCallisto
はい私は両方をしました。 – goldlife