Я использую Symfony 5, я хочу, чтобы в администрировании была страница «Редактирование пользователя», на которой я буду менять роли пользователя. Я хочу иметь флажки, чтобы определить, какую роль назначить пользователю, поэтому для этого я нужен тип коллекции с записью 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;
}
));
После этого я не получил ошибку, но я получаю форму с этим видом
Так что у меня нет никакой возможности изменить метки, и даже когда я отправляю форму с этими полями, она выдает ошибку
Ожидаемый аргумент типа "массив", "ноль" "задано в пути к свойствам" ролей ".
Я нашел способ сделать это с помощью Выбрать поле , но я не могу найти способ сделать это с помощью флажка.
Если у вас есть какие-либо идеи, скажите мне, пожалуйста.