我有两个实体,我想要一个自定义的验证器约束以确保两个实体共享一个值。
示例:
实体区域:
实体屋:
非常感谢您的回答以及有关如何实现这一目标的任何提示。
这是实现您想要做的事情的解决方案:
在您的 FormType 中,在 PRE_SUBMIT 上添加事件侦听器并添加约束,如下所示:
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents;
use Symfony\Component\Validator\Constraints\EqualTo;
// ...
$builder->addEventListener(FormEvents::PRE_SUBMIT, function (FormEvent $event) {
$data = $event->getData();
$form = $event->getForm();
if (isset($data['cityA'])) {
$form->add('cityB', TextType::class, [
'constraints' => [
new EqualTo([
'value' => $data['cityA'],
'message' => 'Must be the same as cityA',
]),
],
]);
}
// Here other constraints
});