【发布时间】:2020-07-18 00:33:02
【问题描述】:
我正在使用 Symfony 5,我想在管理中有一个“用户编辑”页面,我将在其中更改用户角色,我想有复选框来定义分配给用户的角色,因此,我需要 Collection在里面输入 CheckboxType 条目(如果我是真的),但首先我不能使用用户角色数组作为集合类型的值
$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;
}
));
在此之后,我没有收到错误,但我得到了具有这种外观的表单
所以我没有任何更改标签的选项,即使我提交包含这些字段的表单也会引发错误
在属性路径“roles”处给出“array”、“null”类型的预期参数。
我找到了一种使用 Select Box 的方法,但我找不到任何使用 Checkbox 的方法。
如果你有什么想法,请告诉我。
【问题讨论】:
标签: symfony symfony-forms symfony5