Allow tags to contain any character and only show exact matching parts.

This commit is contained in:
Jan Böhmer 2022-08-03 22:45:02 +02:00
parent 78e3d36a5c
commit f1601cac7f
3 changed files with 4 additions and 3 deletions

View file

@ -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 * @return JsonResponse|Response
*/ */
public function showTag(string $tag, Request $request, DataTableFactory $dataTable) public function showTag(string $tag, Request $request, DataTableFactory $dataTable)
{ {
$tag = trim($tag);
$table = $dataTable->createFromType(PartsDataTable::class, ['tag' => $tag]) $table = $dataTable->createFromType(PartsDataTable::class, ['tag' => $tag])
->handleRequest($request); ->handleRequest($request);

View file

@ -392,7 +392,7 @@ final class PartsDataTable implements DataTableTypeInterface
} }
if (isset($options['tag'])) { 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'])) { if (!empty($options['search'])) {

View file

@ -27,7 +27,7 @@
{% macro string_to_tags(string, class="badge bg-info") %} {% macro string_to_tags(string, class="badge bg-info") %}
{% for tag in string|split(',') %} {% for tag in string|split(',') %}
<a href="{{ url('part_list_tags', {'tag': tag | trim}) }}" class="{{ class }}" >{{ tag | trim }}</a> <a href="{{ url('part_list_tags', {'tag': tag | trim | url_encode}) }}" class="{{ class }}" >{{ tag | trim }}</a>
{% endfor %} {% endfor %}
{% endmacro %} {% endmacro %}