@@ 47-85 (lines=39) @@ | ||
44 | * @param Request $request |
|
45 | * @return JsonResponse |
|
46 | */ |
|
47 | public function getAutocompleteItemsAction(Request $request) |
|
48 | { |
|
49 | $this->mediaAdmin->checkAccess('list'); |
|
50 | ||
51 | $minimumInputLength = 3; |
|
52 | $searchText = $request->get('q'); |
|
53 | if (mb_strlen($searchText, 'UTF-8') < $minimumInputLength) { |
|
54 | return new JsonResponse(['status' => 'KO', 'message' => 'Too short search string'], Response::HTTP_FORBIDDEN); |
|
55 | } |
|
56 | ||
57 | $this->mediaAdmin->setPersistFilters(false); |
|
58 | $datagrid = $this->mediaAdmin->getDatagrid(); |
|
59 | $datagrid->setValue('title', null, $searchText); |
|
60 | $datagrid->setValue('_per_page', null, $request->query->get('_per_page', 1)); |
|
61 | $datagrid->setValue('_page', null, $request->query->get('_page', 10)); |
|
62 | $datagrid->buildPager(); |
|
63 | ||
64 | $pager = $datagrid->getPager(); |
|
65 | $results = $pager->getResults(); |
|
66 | ||
67 | /** |
|
68 | * @var MediaInterface $media |
|
69 | */ |
|
70 | $items = []; |
|
71 | foreach($results as $media) { |
|
72 | $items[] = [ |
|
73 | 'id' => $media->getId(), |
|
74 | 'label' => $this->templating->render('@MediaMonksSonataMedia/CRUD/autocomplete.html.twig', [ |
|
75 | 'media' => $media |
|
76 | ]) |
|
77 | ]; |
|
78 | } |
|
79 | ||
80 | return new JsonResponse([ |
|
81 | 'status' => 'OK', |
|
82 | 'more' => false, |
|
83 | 'items' => $items |
|
84 | ]); |
|
85 | } |
|
86 | ||
87 | /** |
|
88 | * @param Request $request |
@@ 38-76 (lines=39) @@ | ||
35 | * @param Request $request |
|
36 | * @return JsonResponse |
|
37 | */ |
|
38 | public function getAutocompleteItemsAction(Request $request) |
|
39 | { |
|
40 | $this->mediaAdmin->checkAccess('list'); |
|
41 | ||
42 | $minimumInputLength = 3; |
|
43 | $searchText = $request->get('q'); |
|
44 | if (mb_strlen($searchText, 'UTF-8') < $minimumInputLength) { |
|
45 | return new JsonResponse(['status' => 'KO', 'message' => 'Too short search string'], Response::HTTP_FORBIDDEN); |
|
46 | } |
|
47 | ||
48 | $this->mediaAdmin->setPersistFilters(false); |
|
49 | $datagrid = $this->mediaAdmin->getDatagrid(); |
|
50 | $datagrid->setValue('title', null, $searchText); |
|
51 | $datagrid->setValue('_per_page', null, $request->query->get('_per_page', 1)); |
|
52 | $datagrid->setValue('_page', null, $request->query->get('_page', 10)); |
|
53 | $datagrid->buildPager(); |
|
54 | ||
55 | $pager = $datagrid->getPager(); |
|
56 | $results = $pager->getResults(); |
|
57 | ||
58 | /** |
|
59 | * @var MediaInterface $media |
|
60 | */ |
|
61 | $items = []; |
|
62 | foreach($results as $media) { |
|
63 | $items[] = [ |
|
64 | 'id' => $media->getId(), |
|
65 | 'label' => $this->templating->render('@MediaMonksSonataMedia/CRUD/autocomplete.html.twig', [ |
|
66 | 'media' => $media |
|
67 | ]) |
|
68 | ]; |
|
69 | } |
|
70 | ||
71 | return new JsonResponse([ |
|
72 | 'status' => 'OK', |
|
73 | 'more' => false, |
|
74 | 'items' => $items |
|
75 | ]); |
|
76 | } |
|
77 | } |
|
78 |