FormType中的安全上下文

时间:2013-10-24 09:42:13

标签: php symfony

我想创建一个FormType,但我希望FormType根据用户的角色呈现不同的字段。最好的方法是什么?如何在FormType

中获取安全上下文

2 个答案:

答案 0 :(得分:1)

将该代码段用于要呈现不同字段的视图

(其中ROLE_SUPER_ADMIN只是一个例子)

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

然而,更好的解决方案(即:securiy holes),将构建表单直接导入逻辑,并仅传递您感兴趣的字段

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
    }
  }
}

答案 1 :(得分:0)

我宁愿调整formBuilder中的FormType

您可以通过__construct()方法

为他提供角色或变量