1

我想创建一个FormType,但我希望FormType根据用户的角色呈现不同的字段。最好的方法是什么?以及如何在 a 中获取安全上下文FormType

4

2 回答 2

1

在要呈现不同字段的视图中使用该代码片段

(这里ROLE_SUPER_ADMIN只是一个例子)

{% if is_granted('ROLE_SUPER_ADMIN') %}
{% endif %}

但是,更好的解决方案(即:安全漏洞)是将表单直接构建到逻辑中,并仅传递您感兴趣的字段

public function fooController() {
  //some logic here
  $sc= $this->get('security.context');
  $form = new FooForm($sc);
}

class FooForm extends Abstract Type
{
  private $sc;

  public function __construct($sc) {
   $this->sc = $sc;
  }

  public function BuildForm(FormBuilderInterface $builder, $array options) {
    if($sc->isGRanted('ROLE_SUPER_ADMIN') {
      //add fields here
    }
  }
}
于 2013-10-24T09:46:24.480 回答
0

我宁愿适应formBuilder你的FormType.

__construct()你可以通过方法给他角色或变量

于 2013-10-24T09:48:03.447 回答