我想创建一个FormType
,但我希望FormType
根据用户的角色呈现不同的字段。最好的方法是什么?如何在FormType
?
答案 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()
方法