在Symfony 3中有条件地显示表单字段

时间:2016-10-29 17:14:39

标签: symfony symfony-forms

我有一个帐户(如公司帐户)实体,其中包含accountOwner的用户关联。

帐户所有者和ROLE_ADMIN用户都可以修改帐户,但只有ROLE_ADMIN的用户才能设置帐户所有者。

我需要2种表格类型吗?或者我可以根据用户角色有条件地在同一表单上显示accountOwner字段吗?

1 个答案:

答案 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');
    }
}