From 67f79083ef7d46a07f5539fa73731020b8892fba Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Thu, 12 Oct 2023 16:04:43 +0200 Subject: [PATCH] change params given to the callback of a global batch action (page removed, add selected items) --- .../Controller/Admin/Crud/CrudController.php | 26 ++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/src/core/Controller/Admin/Crud/CrudController.php b/src/core/Controller/Admin/Crud/CrudController.php index f86c634..e1afa06 100644 --- a/src/core/Controller/Admin/Crud/CrudController.php +++ b/src/core/Controller/Admin/Crud/CrudController.php @@ -287,7 +287,21 @@ abstract class CrudController extends AdminController $useSelection = 'selection' === $target; if ($batchAction['isGlobal']) { - $result = $callback($query, $useSelection, $entityManager); + $selection = null; + + if ($useSelection) { + $queryClone = clone $query; + $pager = $queryClone->paginate($page, $configuration->getMaxPerPage($context)); + $selection = []; + + foreach ($pager as $key => $entity) { + if (isset($items[$key + 1])) { + $selection[] = $entity; + } + } + } + + $result = $callback($query, $entityManager, $selection); if ($result instanceof Response) { return $result; @@ -295,11 +309,11 @@ abstract class CrudController extends AdminController return $this->redirect($request->query->get('redirectTo')); } - if ('selection' === $target) { - $pager = $query->paginate($page, $configuration->getMaxPerPage($context)); - } else { - $pager = $query->find(); - } + + $pager = $useSelection + ? $query->paginate($page, $configuration->getMaxPerPage($context)) + : $query->find() + ; foreach ($pager as $key => $entity) { if (($useSelection && isset($items[$key + 1])) || !$useSelection) {