Symfony表单-包含复选框的集合类型
我使用的是Symfony 5,我希望在管理中有一个“用户编辑”页面,在其中我将更改用户角色,我希望有复选框来定义分配给用户的角色,因此,我需要包含复选框类型条目的集合类型(如果我为true),但首先我不能使用用户角色数组作为集合类型的值Symfony表单-包含复选框的集合类型,symfony,symfony-forms,symfony5,Symfony,Symfony Forms,Symfony5,我使用的是Symfony 5,我希望在管理中有一个“用户编辑”页面,在其中我将更改用户角色,我希望有复选框来定义分配给用户的角色,因此,我需要包含复选框类型条目的集合类型(如果我为true),但首先我不能使用用户角色数组作为集合类型的值 $builder ->add('roles', CollectionType::class, [ 'entry_type' => CheckboxType::class, 'entry_
$builder
->add('roles', CollectionType::class, [
'entry_type' => CheckboxType::class,
'entry_options' => [
'required' => false,
],
])
这会引发错误
无法转换属性路径“[0]”的值:应为布尔值。
之后,我尝试使用模型转换器来更改值,下面是我如何做到这一点的代码
$builder->get('roles')
->addModelTransformer(new CallbackTransformer(
function($rolesAsArray){
$rolesAsArray = array_flip($rolesAsArray);
foreach($rolesAsArray as &$role){
$role = true; // I also tried to set key instead of value - true
}
return $rolesAsArray;
},
function($rolesAsString){
dump($rolesAsString);die;
}
));
在这之后,我没有得到一个错误,但是我得到了这个外观的表单
因此,我没有任何更改标签的选项,即使我提交带有这些字段的表单,也会抛出错误
属性路径“角色”处给定的类型为“array”、“null”的预期参数。
我找到了一种使用复选框的方法,但我找不到任何使用复选框的方法
如果您有任何想法,请告诉我。您可以使用ChoiceType:
$builder->add('roles', ChoiceType::class, array(
'label' => 'form.label.role',
'choices' => User::ROLES,
'choice_translation_domain' => 'user',
'multiple' => true,
'expanded' => true,
'required' => true,
));
在用户实体中:
const ROLES = array(
'roles.admin' => 'ROLE_ADMIN',
'roles.secretary' => 'ROLE_SECRETARY',
'roles.user' => 'ROLE_USER'
);
不,我需要有多个角色,使用我已经做过的选择框,这并不难,问题是要将此功能与复选框结合使用。当您使用ChoiceType与multiple=true和expanded=true结合使用时,我将其用于我的用户角色