From 2942d1395ea5cc784f5f6078be646845b2ea9423 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20H=C3=BCbner?= Date: Mon, 24 Apr 2017 11:20:03 +0200 Subject: [PATCH] Add search action --- app/Resources/views/base.html.twig | 34 +++++++- .../views/rebrickable/part/index.html.twig | 25 ------ app/Resources/views/search/index.html.twig | 20 +++++ src/AppBundle/Controller/SearchController.php | 81 +++++++++++++++++++ 4 files changed, 134 insertions(+), 26 deletions(-) delete mode 100644 app/Resources/views/rebrickable/part/index.html.twig create mode 100644 app/Resources/views/search/index.html.twig create mode 100644 src/AppBundle/Controller/SearchController.php diff --git a/app/Resources/views/base.html.twig b/app/Resources/views/base.html.twig index 491df83..afe7f4f 100644 --- a/app/Resources/views/base.html.twig +++ b/app/Resources/views/base.html.twig @@ -4,7 +4,19 @@ {% block body %} {% block page %}
@@ -45,4 +57,24 @@
{% endblock %} +{% endblock %} + +{% block javascripts %} + {{ parent() }} + + {% endblock %} \ No newline at end of file diff --git a/app/Resources/views/rebrickable/part/index.html.twig b/app/Resources/views/rebrickable/part/index.html.twig deleted file mode 100644 index 9b5a206..0000000 --- a/app/Resources/views/rebrickable/part/index.html.twig +++ /dev/null @@ -1,25 +0,0 @@ -{% extends 'base.html.twig' %} - -{% block content %} - -
-
- {% for part in parts %} - - {% endfor %} -
-
- -

{{ parts.getTotalItemCount }}

- - {{ knp_pagination_render(parts) }} -{% endblock %} diff --git a/app/Resources/views/search/index.html.twig b/app/Resources/views/search/index.html.twig new file mode 100644 index 0000000..abc72fc --- /dev/null +++ b/app/Resources/views/search/index.html.twig @@ -0,0 +1,20 @@ +{% extends 'base.html.twig' %} + +{% block title %}{% endblock %} + +{% block header %}{% endblock %} + +{% block content %} +
+
+ {% for set in sets %} + + {% endfor %} +
+
+{% endblock %} \ No newline at end of file diff --git a/src/AppBundle/Controller/SearchController.php b/src/AppBundle/Controller/SearchController.php new file mode 100644 index 0000000..f9b3d93 --- /dev/null +++ b/src/AppBundle/Controller/SearchController.php @@ -0,0 +1,81 @@ +get('query'))); + + $modelsResult = $this->get('repository.ldraw.model')->findByQuery($query); + $setsResult = $this->get('repository.rebrickable.set')->findByQuery($query); + + return $this->render('search/index.html.twig', [ + 'sets' => $setsResult, + 'models' => $modelsResult, + ]); + } + + /** + * @Route("/autocomplete", name="search_autocomplete") + */ + public function autocompleteAction(Request $request) + { + $query = trim(strip_tags($request->get('query'))); + + $modelsResult = $this->get('repository.ldraw.model')->findByQuery($query,7); + + $models = []; + /** @var Model $model */ + foreach ($modelsResult as $model) { + $models[] = [ + 'title' => $model->getNumber().' '.$model->getName(), + 'url' => $this->generateUrl('model_detail',['number' => $model->getNumber()]), + ]; + } + + $setsResult = $this->get('repository.rebrickable.set')->findByQuery($query,7); + + $sets = []; + /** @var Set $set */ + foreach ($setsResult as $set) { + $sets[] = [ + 'title' => $set->getNumber().' '.$set->getName(), + 'url' => $this->generateUrl('set_detail',['number' => $set->getNumber()]), + ]; + } + + $response = new JsonResponse(); + $response->setData([ + 'results' => [ + 'category' => [ + 'name' => 'Sets', + 'results' => $sets, + ], + 'category1' => [ + 'name' => 'Models', + 'results' => $models, + ] + ] + ]); + + + return $response; + } +} \ No newline at end of file