diff --git a/src/Controller/CapsuleController.php b/src/Controller/CapsuleController.php index cb9eecf490e83eb68ec4947e64c2177561f075e6..19d03946061ce6ed580a73db2609cd2e23577310 100755 --- a/src/Controller/CapsuleController.php +++ b/src/Controller/CapsuleController.php @@ -75,10 +75,19 @@ class CapsuleController extends AbstractController $all_capsules = $current_user->getCapsules()->toArray(); $groups = $this->prependGroupAllToUserGroups($current_user); - $form = $this->createForm(FilterByGroupFormType::class, ['groups' => $groups]); - $form->handleRequest($request); + $form = $this->createForm(FilterByGroupFormType::class, ['groups' => $groups, 'method' => 'GET']); + + // Retrieve group from GET data and update form data if required + $paginatorGroupName = $request->query->get('group', ''); + $forceForm = false; + if ($paginatorGroupName != '') { + $form->submit(['name' => $paginatorGroupName]); + $forceForm = true; + } else { + $form->handleRequest($request); + } - if ($form->isSubmitted() && $form->isValid()) { + if ($forceForm || $form->isSubmitted() && $form->isValid()) { $group = $form->getData()['name']; if (! $group instanceof Group) { @@ -88,6 +97,8 @@ class CapsuleController extends AbstractController if ($group->getId() !== Group::$GROUP_ALL_ID) { $all_capsules = $group->getCapsules()->toArray(); } + } else { + $group = null; } $capsules = $paginator->paginate( @@ -96,6 +107,11 @@ class CapsuleController extends AbstractController 5 ); + // Pass group param to the paginator (it will be sent as GET data) + if ($group) { + $capsules->setParam('group', $group->getName()); + } + return $this->renderForm('capsule/index.html.twig', [ 'filterByGroupForm' => $form, 'capsules' => $capsules, diff --git a/templates/capsule/index.html.twig b/templates/capsule/index.html.twig index 3bc0322a7a997bf3f38dd9fa719c11deee34f18d..70edbdd9a903756aa6e7c0360e6c1adcba48dbd8 100644 --- a/templates/capsule/index.html.twig +++ b/templates/capsule/index.html.twig @@ -13,17 +13,15 @@ {{ 'capsule.title'|trans }} </h2> - {% if app.request.query.get('page')|default(1) == 1 %} - {% if current_user.getGroups()|length > 1 %} - {{ form_start(filterByGroupForm, {'attr': {novalidate: 'novalidate', 'class': 'd-flex flex-column flex-nowrap'}}) }} - {{ form_widget(filterByGroupForm._token) }} - <div class="input-group"> - {{ form_label(filterByGroupForm.name, 'groups.filter.label', { 'label_attr' : { 'class' : 'input-group-text mb-0'}}) }} - {{ form(filterByGroupForm.name, {'attr': {'class': 'choice-auto-submit' }}) }} - </div> - {{ form_end(filterByGroupForm) }} - {% endif %} - {% endif %} + {% if current_user.getGroups()|length > 1 %} + {{ form_start(filterByGroupForm, {'attr': {novalidate: 'novalidate', 'class': 'd-flex flex-column flex-nowrap'}}) }} + {{ form_widget(filterByGroupForm._token) }} + <div class="input-group"> + {{ form_label(filterByGroupForm.name, 'groups.filter.label', { 'label_attr' : { 'class' : 'input-group-text mb-0'}}) }} + {{ form(filterByGroupForm.name, {'attr': {'class': 'choice-auto-submit' }}) }} + </div> + {{ form_end(filterByGroupForm) }} + {% endif %} <form class="d-flex mb-4 mb-lg-0"> <button class="btn btn-orange text-uppercase" formaction="{{ path('create_capsule') }}">