Я обращаюсь к вам за помощью, пожалуйста, потому что я хочу сделать форму поиска, но я блокирую на контроллере
Мои вопросы, как сделать форму в get?
Я делюсьВы мой код
мой контроллер:
/**
* @Route({"fr": "/recherche/search/?value={value}®ion={region}&category={category}",
* "en": "/search/",
* "es": "/buscar/"}, name="search", methods="GET")
* @param Request $request
* @param string $value
* @param string $region
* @param string $category
* @return Response
* @throws \Exception
*/
public function searchAction(Request $request, string $value, string $region, string $category): Response
{
$form = $this->createForm(SearchType::class);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid())
{
$value = $form->getData()->getTitle();
$search = $this->getDoctrine()->getRepository(Advertisement::class)->findBySearch($value, $region, $category);
return $this->render('search/result.html.twig', [
'results' => $search
]);
}
return $this->render('search/search.html.twig', [
'form' => $form->createView()
]);
}
в моем хранилище мне нужен этот запрос:
SELECT * FROM `advertisement`
WHERE category_id = 7
AND region_id = 1
AND title LIKE '%iph%'
OR description LIKE 'test'
мой хранилище:
/**
* @return Advertisement|null
* @param string $value
* @param $region
* @param $category
* @throws \Exception
*/
public function findBySearch(string $value, $region, $category)
{
$query = $this->createQueryBuilder('a')
->addSelect('a')
->where('a.category = :category')
->andWhere('a.region = :region')
->andWhere('a.title LIKE :value')
->orWhere('a.description LIKE :value')
->setParameter(':value', $value)
->setParameter(':region', $region)
->setParameter(':category', $category)
->getQuery();
try {
return $query->getResult();
}
catch(\Exception $e) {
throw new \Exception('problème '. $e->getMessage(). $e->getFile());
}
}
спасибо за помощь!