Я хочу одновременно создать панель поиска на верхней странице и форму фильтра на боковой стороне страницы, чтобы обрабатывать один и тот же объект "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,
));
}
}
Есть идеи, пожалуйста?