Форма фильтра запросов для формы фильтра - PullRequest
0 голосов
/ 19 марта 2020

Я хочу одновременно создать панель поиска на верхней странице и форму фильтра на боковой стороне страницы, чтобы обрабатывать один и тот же объект "Offre". Я продолжаю так разделять одну форму на две:

{{ form_start(form) }}
    <div class="row">
        <div class="col-md-12">
            <div class="row" >
                <div class="col-md-12">
                    {{ form_row(form.motCle) }}
                </div>
            </div>
            <div class="row" >
                <div class="col-md-6 ">
                    {{ form_row(form.metier) }}
                </div>
                <div class="col-md-6">
                    {{ form_row(form.type,{attr:{class:'barMetier'}}) }}
                </div>
            </div>
        </div>
        <div class="col-md-3">

        </div>
    </div>
<div class="row ">
    <div class="offset-4 col-md-4">
        <button type="submit" class="btn btn-success col-md-12"><i class="fa fa-search" aria-hidden="true">Chercher</i></button>
    </div>
</div>

это для строки поиска, результат равен Result searchBar , а для второй части здесь это код:

    {{ form_start(form,{ attr:{class:'filter'}}) }}
<div class="row">
    <div class="col-md-12">
        <h6>Regions: </h6>
    </div>
</div>
<div class="row">
    <div class="col-md-12">
        <h6>Département: </h6>
        {{ form_row(form.departement,{attr:{class:'barMetier'}}) }}
    </div>
</div>
<div class="row">
    <div class="col-md-12">
        <h6>Éxperiences: </h6>
        {{ form_row(form.experience,{attr:{class:'barMetier'}}) }}
    </div>
</div>

<button type="submit" class="btn btn-success">filter</button>

и результат: введите описание изображения здесь

две проблемы состоят в том, что, если мне нужно использовать только строку поиска (поиск по ключевому слову, например, ex), он возвращает 0 результата, поэтому я должен выбрать варианты в боковая форма (я должен заполнить все поля выбора), чтобы получить ожидаемый результат, который я пытался использовать, или Где в запросах это не лучшее решение, я думаю о создании другой формы, но я не знаю, как настроить это в контроллере и репозитории, кстати, это мой репозиторий:

       public function findSearch(OffreSearchSide $data):?array
    {
        $query = $this->createQueryBuilder('o');
        if ($data->experience) {
            $query
                ->orwhere('o.experience < = :experience')
                ->setParameter('experience', $data->experience);
        }
        if ($data->departement) {
            $query
                ->orWhere('o.departement  = :departement')
                ->setParameter('departement', $data->departement);
        }
        if ($data->metier) {
            $query
                ->andWhere('o.metier  = :metier')
                ->setParameter('metier', $data->metier);
        }
        if ($data->type) {
            $query
                ->andWhere('o.type  = :type')
                ->setParameter('type', $data->type);
        }
        if ($data->motCle){
            $query
                ->andWhere('o.titre LIKE :motCle')
                ->setParameter('motCle', '%'.$data->motCle.'%');
        }


        return $query->getQuery()->getResult();

    }

}

, а это контроллер

   class OffresController extends AbstractController
{

    /**
     * OffresController constructor.
     * @param OffreEmploiRepository $repository
     */
    public function __construct(OffreEmploiRepository $repository)
    {
        $this->repository = $repository;
    }

    /**
     * @Route("/offres", name="offres")
     * @param Request $request
     * @param PaginatorInterface $paginator
     * @return Response
     */
    public function offreSearch(Request $request, PaginatorInterface $paginator ):Response
    {
        $search=new OffreSearchSide();
        $form = $this->createForm(OfferSearchType::class,$search);
        $form->handleRequest($request);
        $offres= $this->repository->findSearch($search);
        return $this->render('offre/index.html.twig', array(
            'formulaire'   =>$form->createView(),
            'offres' => $offres,
        ));

    }

}

Есть идеи, пожалуйста?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...