我有一个帐户(如公司帐户)实体,其中包含accountOwner
的用户关联。
帐户所有者和ROLE_ADMIN
用户都可以修改帐户,但只有ROLE_ADMIN
的用户才能设置帐户所有者。
我需要2种表格类型吗?或者我可以根据用户角色有条件地在同一表单上显示accountOwner
字段吗?
答案 0 :(得分:1)
您可以有条件地提供accountOwner
关联。
如果要动态修改表单,通常需要使用form events。
但是,因为表单的字段不依赖于绑定到表单的实际数据,而是依赖于安全上下文,您可以将授权检查器注入表单类型并检查是否要添加所需字段:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('always_present_field');
$builder->add('another_always_present_field');
if ($this->authorizationChecker->isGranted('ROLE_ADMIN')) {
$builder->add('conditional_field_if_current_user_is_admin');
}
}