根據請求用戶的角色,是否有正確的方式來定製表單?如何根據Symfony2/3中的用戶角色自定義表單域?
我的場景很簡單:如果用戶沒有授予ROLE_ADMIN
,我需要隱藏一些字段。我試圖避免在Twig上進行現場顯示,但
{% if is_granted('ROLE_ADMIN') %}
{{form_row(form.field)}}
{% endif %}
不起作用,因爲表單生成器會繞過此檢查。
Symfony的版本:2.8.2
編輯
得益於@Rooneyl suggestion我已經找到了解決辦法:
首先,你需要添加「角色'選項參數的關鍵。所以,在配置選項()$options['role']
總是ROLE_USER。
/**
* @param OptionsResolver $resolver
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'MyBundle\Entity\Ticket',
'role' => 'ROLE_USER'
));
}
然後在控制器,你必須通過getRoles()
陣列:
$user_roles = $this->getUser()->getRoles();
$form = $this->createForm('MyBundle\Form\TicketType', $ticket, array('role' => $user_roles));
已經更新了代碼 – Rooneyl