Symfony 5中带有like参数的搜索表单不返回结果
Posted
技术标签:
【中文标题】Symfony 5中带有like参数的搜索表单不返回结果【英文标题】:Search form in Symfony 5 with like parameter does not return results 【发布时间】:2021-09-05 14:38:47 【问题描述】:我试图只返回搜索表单的结果,但该函数返回 0 个结果。 我没有收到任何错误,但我的结果丢失了,经过几天的搜索,我仍然不明白我做错了什么。提前致谢。
我想在表单中输入一个参数并在我点击提交按钮后返回结果。
这里是存储库函数:
public function findAllWithSearch(?string $cont)
return $this->_em->getConnection()->executeQuery(
"select cont from account_links al
where al.cont like :cont
",['cont'=>'%"' .$cont . '"%']
)->fetchAllAssociative();
这里是控制器功能:
public function searchAction(Request $request,AccountLinksRepository $repository)
$searchForm=$this->createFormBuilder()
->add('cont')
->add('search',SubmitType::class)
->getForm();
$searchForm->handleRequest($request);
if($searchForm->isSubmitted() && $searchForm>isValid())
$data = $searchForm->getData();
$cont = $data['cont'];
$links = $repository->findAllWithSearch($cont);
return $this->render('account_links/search.html.twig', [
'account_links' => $links]);
return $this->render('account_links/index.html.twig',[
'form'=>$searchForm->createView(),
]);
在search.html.twig
:
<form>
<div class="input-group mb-3">
<input type="text"
name="q"
class="form-control"
placeholder="Search..."
>
<div class="input-group-append">
<button type="submit"
class="btn btn-outline-secondary">
<span class="fa fa-search"></span>
</button>
</div>
</div>
</form>
在index.html.twig
:
% for account_link in account_links %
<tr>
<td> account_link.id </td>
<td> account_link.subscriber </td>
<td> account_link.cont </td>
<td> account_link.client </td>
<td> account_link.relationshipType </td>
% endfor %
【问题讨论】:
【参考方案1】:-
看起来你的树枝位置不对(倒置)
如果您在 twig 中手动定义表单,则无需使用
createFormBuilder
避免使用像select * from account_links
这样的sql查询字符串
存储库
public function findAllWithSearch(?string $cont)
return $this->createQueryBuilder('o')
->andWhere('d.cont like :val')
->setParameter('val', '%'.$value.'%')
->getQuery()
->getResult();
控制器
public function searchAction(Request $request,AccountLinksRepository $repository)
if('POST' === $request->getMethod())
$search = $request->request->get('q');
$links = $repository->findAllWithSearch($cont);
return $this->render('account_links/search.html.twig', [
'account_links' => $links
]);
return $this->render('account_links/index.html.twig',[
'form'=>$searchForm->createView(),
]);
【讨论】:
非常感谢:)以上是关于Symfony 5中带有like参数的搜索表单不返回结果的主要内容,如果未能解决你的问题,请参考以下文章