Ojs\AdminBundle\Controller\AdminJournalController::autoCompleteAction PHP 메소드

autoCompleteAction() 공개 메소드

public autoCompleteAction ( Request $request ) : Symfony\Component\HttpFoundation\JsonResponse
$request Symfony\Component\HttpFoundation\Request
리턴 Symfony\Component\HttpFoundation\JsonResponse
    public function autoCompleteAction(Request $request)
    {
        $q = filter_var($request->get('q'), FILTER_SANITIZE_STRING);
        $search = $this->get('fos_elastica.index.search.journal');
        $notCollectJournals = [];
        if ($request->query->has('notCollectJournals')) {
            $notCollectJournalsParam = $request->query->get('notCollectJournals');
            if (!empty($notCollectJournalsParam) && is_array($notCollectJournalsParam)) {
                $notCollectJournals = $notCollectJournalsParam;
            }
        }
        $searchQuery = new Query('_all');
        $boolQuery = new Query\BoolQuery();
        $fieldQuery = new Query\MultiMatch();
        $fieldQuery->setFields(['title']);
        $fieldQuery->setQuery(strtoupper($q));
        $fieldQuery->setFuzziness(0.7);
        $boolQuery->addMust($fieldQuery);
        $searchQuery->setQuery($boolQuery);
        $searchQuery->setSize(10);
        $results = $search->search($searchQuery);
        $data = [];
        foreach ($results as $result) {
            if (!in_array($result->getId(), $notCollectJournals)) {
                $data[] = ['id' => $result->getId(), 'text' => $result->getData()['title']];
            }
        }
        return new JsonResponse($data);
    }