我正在尝试创建一个搜索功能。但我对如何去做有困难。我是 symfony2 的新手,只是自学并阅读一些教程。
我的 DefaultController 中有一个搜索功能。
public function searchAction(){
$request = $this->getRequest();
$data = $request->request->get('search');
$data1 = $request->request->get('search1');
$data2 = $request->request->get('search2');
$em = $this->getDoctrine()->getManager();
$query = $em->createQuery(
'SELECT p
FROM FooTransBundle:Transaction p, FooTransBundle:Supplier d
WHERE p.transType LIKE :data
AND d.name LIKE :data1
AND p.sendDate LIKE :data2')
->setParameter('data',$data)
->setParameter('data1',$data1)
->setParameter('data2',$data2);
$res = $query->getResult();
return $this->render('FooTransBundle:Default:search.html.twig', array(
'res' => $res));
}
在我的 Twig 中,我有一个 search.html.twig
<form class="form-horizontal"role="form"name ="search"method="post" action="{{path('foo_trans_search') }}">
<div class="form-group">
<label for="agr"class="col-sm-2 control-label">Trans Type</label>
<div class="col-sm-10">
<input type="text"class="form-control"id="agr"placeholder="Trans type" name ="search">
</div>
</div>
<div class="form-group">
<label for="trad"class="col-sm-2 control-label">Name:</label>
<div class="col-sm-10">
<input type="text"class="form-control"id="trad"placeholder="Name" name ="search1">
</div>
</div>
<div class="form-group">
<label for="send"class="col-sm-2 control-label">Send Date:</label>
<div class="col-sm-10">
<input type="text"class="form-control"id="send"placeholder="YYYY-MM-DD"name ="search2">
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit"class="btn btn-primary">Submit</button>
</div>
</div>
</form>
我想要的是通过填写三个输入字段、两个输入字段甚至仅三个输入字段之一来从数据库中搜索数据。但它仍然会返回搜索到的数据。
请帮助我。谢谢。
最佳答案
分两步你的应用程序应该可以工作:
首先:得到结果
$res = $query->getQuery()->getResult();
二:在 View 中浏览资源
{%for result in res %}
{{ result.name }}
{%endfor%}
您可以使用 symfony 表单做得更好。
关于php - 可以使用一个或多个值进行搜索的搜索功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24775814/