提问人:endo.anaconda 提问时间:10/28/2023 更新时间:10/29/2023 访问量:40
相关实体的 Valdiator
Valdiator for related entites
问:
我有两个实体,我希望有一个自定义验证器约束,以确保两个实体共享一个值。
例:
实体区域:
- 有田野城
- 具有多个房屋作为一对多关系
- 仅允许具有相同城市的房屋的约束
实体之家:
- 有田野城
- 具有一个区域作为 ManyToOne 关系
非常感谢您回答有关如何实现这一目标的任何提示。
答:
1赞
Skuti
10/29/2023
#1
以下是实现您想要执行的操作的解决方案:
在 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
});
评论