如果其中一个数据库字段设置为true,是否可以自动将其他数据库字段设置为false?
例如:
User
----
admin
is_super_admin
is_coach_admin
用户只能是上述值之一。如果将admin设置为true,则希望将is_super_admin和is_coach_admin自动设置为false。我的意思是,不要设置在后端。有办法吗?至少对于symfony主义来说是最好的:)
答案 0 :(得分:0)
您可以通过Symfony表达式来验证您的业务逻辑(如果一个值为true,其他值为false)
https://symfony.com/doc/3.4/reference/constraints/Expression.html
# src/AppBundle/Resources/config/validation.yml
AppBundle\Model\User:
properties:
isAdmin:
- Expression:
expression: "this.isSuperAdmin() == false"
message: "Admin cannot be a super admin also"
但是,如果您要基于另一个字段设置一个字段的值,则可以使用Symfony事件。
$builder->addEventListener(
FormEvents::SUBMIT,
function(FormEvent $event) {
$form = $event->getForm();
$data = $event->getData();
if ($data->isAdmin()){
$form->get('is_super_admin')->setData(false);
$form->get('is_coach_admin')->setData(false);
}
}
);