Symfony搜索功能

时间:2017-01-01 19:13:52

标签: symfony

我正在尝试实现搜索功能,以允许用户搜索特定实体中的项目,但我不知道我应该如何处理这个问题,基本上我当前在我的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'

为什么会这样?

1 个答案:

答案 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 
    }
}

不要忘记定义您的实体类,我建议您看看这个

http://symfony.com/doc/current/doctrine.html