我正在尝试向我的字段添加自定义字段验证,但我无法使其工作...... 这是我的代码:
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'));
}
});
}
我想要什么: 如果两个字段都为空,则警告至少必须填写一个字段... 我几天来尝试不同的事情,但找不到任何解决方案。我想答案很简单......
感谢您的宝贵时间。
嗯,我设法用另一种方式做到了。 我在我的实体中添加了回调
/**
* @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();
}
}
你尝试过这样的事情吗:
use Symfony\Component\Form\FormError;
if ( ($form->get('tel')->getData() == '') && ($form->get('cell')->getData() == '') ) {
$form->get('tel')->addError(new FormError('error message'));
}
看看是否有效,不确定是否有效。