change CrudController::doBatch to manage a global batch action
This commit is contained in:
parent
c65cc26be8
commit
dda43ef3cc
|
@ -162,7 +162,7 @@ abstract class CrudController extends AdminController
|
||||||
|
|
||||||
$lastRequest = $session->get($lastRequestId);
|
$lastRequest = $session->get($lastRequestId);
|
||||||
|
|
||||||
if ($lastRequest !== null && !$request->isMethod('POST')) {
|
if (null !== $lastRequest && !$request->isMethod('POST')) {
|
||||||
$fakeRequest = Request::create(
|
$fakeRequest = Request::create(
|
||||||
uri: $request->getUri(),
|
uri: $request->getUri(),
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
|
@ -284,16 +284,25 @@ abstract class CrudController extends AdminController
|
||||||
|
|
||||||
$query->useFilters($this->filters);
|
$query->useFilters($this->filters);
|
||||||
|
|
||||||
|
$useSelection = 'selection' === $target;
|
||||||
|
|
||||||
|
if ($batchAction['isGlobal']) {
|
||||||
|
$result = $callback($query, $useSelection, $entityManager);
|
||||||
|
|
||||||
|
if ($result instanceof Response) {
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->redirect($request->query->get('redirectTo'));
|
||||||
|
}
|
||||||
if ('selection' === $target) {
|
if ('selection' === $target) {
|
||||||
$isSelection = true;
|
|
||||||
$pager = $query->paginate($page, $configuration->getMaxPerPage($context));
|
$pager = $query->paginate($page, $configuration->getMaxPerPage($context));
|
||||||
} else {
|
} else {
|
||||||
$isSelection = false;
|
|
||||||
$pager = $query->find();
|
$pager = $query->find();
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($pager as $key => $entity) {
|
foreach ($pager as $key => $entity) {
|
||||||
if (($isSelection && isset($items[$key + 1])) || !$isSelection) {
|
if (($useSelection && isset($items[$key + 1])) || !$useSelection) {
|
||||||
$callback($entity, $entityManager);
|
$callback($entity, $entityManager);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue