leva
leva

Reputation: 37

Search function using twig in symfony

I want to create a simple search function.

Search form

<form class="pull-right hidden" role="search" id="nav-search-form" method="post" action="{{ path('_search') }}">
        <div class="input-group">
          <input type="text" class="form-control" placeholder="Search" name ="search">
          <span class="input-group-btn">
            <button type="submit" class="btn btn-default"></button>
          </span>
        </div>
      </form>

In my DefaultController. I have a search function

public function searchAction(){
       $request = $this->getRequest();
       $data =$request->request->all();


       $em = $this->getDoctrine()->getManager();
       $query = $em->createQuery(
        'SELECT p.type, p.id
        FROM FooTransBundle:Trans p
        WHERE p.type LIKE :data')
       ->setParameter('data',$data['search']);


    $res = $query->getResult();

    return $this->render('FooTransBundle:Default:search.html.twig', array(
        'res' => $res));

}

And after I run that I got an error

Notice: Undefined index: search in C:\xampp\htdocs\Sample\src\Foo\TransBundle\Controller\DefaultController.php line 96

It is in the line ->setParameter('data',$data['search']); of my Controller

Can someone help me. I am very new to symfony. Thanks for your help.

Upvotes: 3

Views: 10023

Answers (1)

Ajeet Varma
Ajeet Varma

Reputation: 726

Try this:

public function searchAction(){
   $request = $this->getRequest();
   $data = $request->request->get('search');


   $em = $this->getDoctrine()->getManager();
   $query = $em->createQuery(
    'SELECT p FROM FooTransBundle:Suplier p
    WHERE p.name LIKE :data')
   ->setParameter('data',$data);


$res = $query->getResult();

return $this->render('FooTransBundle:Default:search.html.twig', array(
    'res' => $res));

Upvotes: 4

Related Questions