根据字段值在表单上添加错误

问题描述 投票:0回答:2

我正在尝试向我的字段添加自定义字段验证,但我无法使其工作...... 这是我的代码:

public function buildForm(FormBuilderInterface $builder, array $options)
{

    $builder
            ->add('somefields', ChoiceType::Class, array(
                '...'
            ))
            ->add('tel', TextType::class, array(
                'label' => "Téléphone :",
                'required' => false
            ))
            ->add('cell', TextType::class, array(
                'label' => "Port. :",
                'required' => false
            ))
    ;

    $builder->addEventListener(FormEvents::PRE_SUBMIT, function (FormEvent $event) use ($options) {
        $data = $event->getData();
        $form = $event->getForm();

        if (empty($data['tel']) && empty($data['cell'])) {
            $form->get('tel')->addError(new FormError('error message'));
        }
    });
}

我想要什么: 如果两个字段都为空,则警告至少必须填写一个字段... 我几天来尝试不同的事情,但找不到任何解决方案。我想答案很简单......

感谢您的宝贵时间。

symfony
2个回答
0
投票

嗯,我设法用另一种方式做到了。 我在我的实体中添加了回调

/**
 * @Assert\Callback
 */
public function validate(ExecutionContextInterface $context, $payload) {
    if (empty($this->getTel()) && empty($this->getCell())) {
        $context->buildViolation('validation message')
                ->atPath('tel')
                ->addViolation();
        $context->buildViolation('validation message')
                ->atPath('cell')
                ->addViolation();
    }
}

0
投票

你尝试过这样的事情吗:

use Symfony\Component\Form\FormError;

if ( ($form->get('tel')->getData() == '') && ($form->get('cell')->getData() == '') ) {
     $form->get('tel')->addError(new FormError('error message'));
}

看看是否有效,不确定是否有效。

© www.soinside.com 2019 - 2024. All rights reserved.