我想创建一个FormType
,但我希望FormType
根据用户的角色呈现不同的字段。最好的方法是什么?以及如何在 a 中获取安全上下文FormType
?
问问题
200 次
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 回答