相关实体的 Valdiator

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

我有两个实体,我想要一个自定义的验证器约束以确保两个实体共享一个值。

示例:

实体区域:

  • 有田城
  • 有多个房屋作为 OneToMany 关系
  • 限制只允许具有相同城市的房屋

实体屋:

  • 有田城
  • 有一个区域作为多对一关系

非常感谢您的回答以及有关如何实现这一目标的任何提示。

symfony validation constraints symfony6
1个回答
0
投票

这是实现您想要做的事情的解决方案:

在您的 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
});
© www.soinside.com 2019 - 2024. All rights reserved.