`->add('raw_roles', ChoiceType::class, [
'label' => 'User access',
'multiple' => true,
'expanded' => true,
'choices' => [
'PMTool' => 'ROLE_USER',
'SPOC' => 'ROLE_SPOC_USER',
'Debug' => 'ROLE_SOAP_USER',
],
])`
如何默认检查 PMTool 复选框,我也不希望在修改现有用户时覆盖数据。
`->add('raw_roles', ChoiceType::class, [
'label' => 'User access',
'multiple' => true,
'expanded' => true,
'choices' => [
'PMTool' => 'ROLE_USER',
'SPOC' => 'ROLE_SPOC_USER',
'Debug' => 'ROLE_SOAP_USER',
],
data => ['ROLE_USER'],
])`
我尝试过这个,但是当我修改现有用户时,它会被自动检查,并且如果不取消选中它就不会被保存。
回调返回
['ROLE_USER']
默认选中“PMTool”复选框。否则,我们返回一个空数组 []
以使复选框保持未选中状态。 (文档)
->add('raw_roles', ChoiceType::class, [
'label' => 'User access',
'multiple' => true,
'expanded' => true,
'choices' => [
'PMTool' => 'ROLE_USER',
'SPOC' => 'ROLE_SPOC_USER',
'Debug' => 'ROLE_SOAP_USER',
],
'data' => function ($value, $user) {
// Check if the user already has the 'ROLE_USER' (PMTool) role
if (in_array('ROLE_USER', $user->getRoles())) {
return ['ROLE_USER'];
} else {
return [];
}
},
])