From f1601cac7fd3cd6abefd930728cc9b2bcbcebcae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Wed, 3 Aug 2022 22:45:02 +0200 Subject: [PATCH] Allow tags to contain any character and only show exact matching parts. --- src/Controller/PartListsController.php | 3 ++- src/DataTables/PartsDataTable.php | 2 +- templates/helper.twig | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/Controller/PartListsController.php b/src/Controller/PartListsController.php index ce5e9495..32719591 100644 --- a/src/Controller/PartListsController.php +++ b/src/Controller/PartListsController.php @@ -203,12 +203,13 @@ class PartListsController extends AbstractController } /** - * @Route("/parts/by_tag/{tag}", name="part_list_tags") + * @Route("/parts/by_tag/{tag}", name="part_list_tags", requirements={"tag": ".*"}) * * @return JsonResponse|Response */ public function showTag(string $tag, Request $request, DataTableFactory $dataTable) { + $tag = trim($tag); $table = $dataTable->createFromType(PartsDataTable::class, ['tag' => $tag]) ->handleRequest($request); diff --git a/src/DataTables/PartsDataTable.php b/src/DataTables/PartsDataTable.php index f944e7f3..db81b348 100644 --- a/src/DataTables/PartsDataTable.php +++ b/src/DataTables/PartsDataTable.php @@ -392,7 +392,7 @@ final class PartsDataTable implements DataTableTypeInterface } if (isset($options['tag'])) { - $builder->andWhere('part.tags LIKE :tag')->setParameter('tag', '%'.$options['tag'].'%'); + $builder->andWhere('part.tags LIKE :tag')->setParameter('tag', $options['tag']); } if (!empty($options['search'])) { diff --git a/templates/helper.twig b/templates/helper.twig index de6a8212..22faf498 100644 --- a/templates/helper.twig +++ b/templates/helper.twig @@ -27,7 +27,7 @@ {% macro string_to_tags(string, class="badge bg-info") %} {% for tag in string|split(',') %} - {{ tag | trim }} + {{ tag | trim }} {% endfor %} {% endmacro %}