使用 like 参数在 Symfony 5 中搜索表单没有 return 结果
Search form in Symfony 5 with like parameter does not return results
我正在尝试 return 仅搜索表单的结果,但函数 return 有 0 个结果。
我没有收到任何错误,但我的结果丢失了,经过几天的搜索,我仍然不明白我做错了什么。提前致谢。
我想在表单中输入一个参数,return 点击提交按钮后的结果。
这里是存储库函数:
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 %}
- 看起来你的树枝位置不对(反了)
- 如果您在 twig 中手动定义表单,则不需要使用
createFormBuilder
- 避免使用 sql 查询字符串,例如
select * from account_links
存储库
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(),
]);
}
我正在尝试 return 仅搜索表单的结果,但函数 return 有 0 个结果。 我没有收到任何错误,但我的结果丢失了,经过几天的搜索,我仍然不明白我做错了什么。提前致谢。
我想在表单中输入一个参数,return 点击提交按钮后的结果。
这里是存储库函数:
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 %}
- 看起来你的树枝位置不对(反了)
- 如果您在 twig 中手动定义表单,则不需要使用
createFormBuilder
- 避免使用 sql 查询字符串,例如
select * from account_links
存储库
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(),
]);
}