. */ namespace App\DataTables; use App\DataTables\Column\RowClassColumn; use App\Entity\Parts\Part; use Omines\DataTablesBundle\Adapter\ArrayAdapter; use Omines\DataTablesBundle\Column\TextColumn; use Omines\DataTablesBundle\DataTable; use Omines\DataTablesBundle\DataTableFactory; use Omines\DataTablesBundle\DataTableTypeInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\OptionsResolver\OptionsResolver; class ErrorDataTable implements DataTableTypeInterface { public function configureOptions(OptionsResolver $optionsResolver): void { $optionsResolver->setRequired('errors'); $optionsResolver->setAllowedTypes('errors', ['array', 'string']); $optionsResolver->setNormalizer('errors', function (OptionsResolver $optionsResolver, $errors) { if (is_string($errors)) { $errors = [$errors]; } return $errors; }); } public function configure(DataTable $dataTable, array $options): void { $optionsResolver = new OptionsResolver(); $this->configureOptions($optionsResolver); $options = $optionsResolver->resolve($options); $dataTable ->add('dont_matter_we_only_set_color', RowClassColumn::class, [ 'render' => fn($value, $context): string => 'table-warning', ]) ->add('error', TextColumn::class, [ 'label' => 'error_table.error', 'render' => fn($value, $context): string => ' ' . $value, ]) ; //Build the array containing data $data = []; foreach ($options['errors'] as $error) { $data[] = ['error' => $error]; } $dataTable->createAdapter(ArrayAdapter::class, $data); } /** * @param string[]|string $errors */ public static function errorTable(DataTableFactory $dataTableFactory, Request $request, array|string $errors): Response { $error_table = $dataTableFactory->createFromType(self::class, ['errors' => $errors]); $error_table->handleRequest($request); return $error_table->getResponse(); } }