From f97f1dfedf5a8c6b78a6d9d9800699d90ec4c6a1 Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Wed, 27 Sep 2023 15:17:35 +0200 Subject: [PATCH] add crud sorting in the session --- .../Controller/Admin/Crud/CrudController.php | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/core/Controller/Admin/Crud/CrudController.php b/src/core/Controller/Admin/Crud/CrudController.php index bb9df19..41d934a 100644 --- a/src/core/Controller/Admin/Crud/CrudController.php +++ b/src/core/Controller/Admin/Crud/CrudController.php @@ -395,9 +395,24 @@ abstract class CrudController extends AdminController } $defaultSort = $configuration->getDefaultSort($context); + $session = $request->getSession(); - $name = $request->query->get('_sort', $defaultSort['label'] ?? null); - $direction = strtolower($request->query->get('_sort_direction', $defaultSort['direction'] ?? 'asc')); + $sessionId = sprintf('%s_%s_sort', $context, get_called_class()); + $sessionSortName = sprintf('%s_label', $sessionId); + $sessionSortDirection = sprintf('%s_direction', $sessionId); + + $name = strtolower($request->query->get( + '_sort', + $session->get($sessionSortName, $defaultSort['label'] ?? 'asc') + )); + + $direction = strtolower($request->query->get( + '_sort_direction', + $session->get($sessionSortDirection, $defaultSort['direction'] ?? 'asc') + )); + + $session->set($sessionSortName, $name); + $session->set($sessionSortDirection, $direction); if (!in_array($direction, ['asc', 'desc'])) { $direction = 'asc';