我正在尝试实现搜索功能,以允许用户搜索特定实体中的项目,但我不知道我应该如何处理这个问题,基本上我当前在我的twig文件中有:
<form id="form_search" action="{{ path('search') }}">
<input type="text" class="form-control" placeholder="Search" name ="find">
<button type="submit" class="btn btn-default"></button>
</form>
然后在我的控制器中我有:
public function indexAction(Request $request)
{
if($request->isMethod('GET'))
{
echo 'get';
}
else
{
echo 'post';
}
return $this->render('Bundle:Search:index.html.twig', array(
));
}
我正在考虑从参数中获取搜索输入字段的输入。然而,他们无法分离用户是刚刚加载页面还是实际提交了表单..正如你所看到的,我试图通过分离内容来了解如何做到这一点:
因此,如果用户已加载页面,则不会进行搜索..但是,如果用户提交表单,那么它将执行搜索但由于某种原因,即使我提交表单,它也会打印'get'而不是比'post'
为什么会这样?
答案 0 :(得分:0)
您需要在控制器中定义一个新功能,用于进行搜索,这是:
class YourController extends Controller
{
/**
* @Route("/", name="index")
*/
public function indexAction(Request $request)
{
return $this->render('Bundle:Search:index.html.twig', array());
}
/**
* @Route("/", name="search")
*/
public function searchAction(Request $request)
{
$your_value = $request->get("find");
//implement your search here,
$repository = $this->getDoctrine()->getRepository('AppBundle:YourEntity');
$result = $repository->findBy(array("field_name"=>$your_value));
//Here you can return your data in JSON format or in a twig template
}
}
不要忘记定义您的实体类,我建议您看看这个