$repository */ $repository = $options['repository']; /** @var MultiUpdateTableDTO $dto */ $dto = $options['data']; $builder->add('entities', HiddenType::class, [ 'required' => false, 'attr' => ['class' => 'multi_update_ids'] ]); $builder->get('entities')->addModelTransformer( new CallbackTransformer( function ($ids): string { return implode(',', $ids); }, function ($ids) use ($repository) { if (empty($ids)) { return []; } $temp = explode(',', $ids); if (\count($temp) === 0) { return []; } return $repository->findBy(['id' => $temp]); } ) ); $i = 0; foreach ($dto->getActions() as $key => $value) { if (empty($key) || empty($value)) { continue; } $builder->add('action_' . $i++, ButtonType::class, [ 'label' => $key, 'attr' => [ 'data-href' => $value, 'class' => 'multi_update_table_action' . (stripos($key, 'delete') !== false ? ' btn-danger' : ' btn-primary'), ], ]); } } public function configureOptions(OptionsResolver $resolver): void { $resolver->setDefined(['repository']); $resolver->setAllowedTypes('repository', EntityRepository::class); $resolver->setRequired('repository'); $resolver->setDefaults([ 'data_class' => MultiUpdateTableDTO::class, 'csrf_protection' => true, 'csrf_field_name' => '_token', 'csrf_token_id' => 'entities_multiupdate', ]); } }