| @@ 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', 10)); |
|
| 52 | $datagrid->setValue('_page', null, $request->query->get('_page', 1)); |
|
| 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 | ||