Как реализовать форму фильтра поиска с помощью Symfony2

У меня есть список элементов для отображения на странице с формой поиска над ним для фильтрации этих элементов, как и в любом обычном бэкэнде. Проблема в том, что я не знаю, как добавить критерии поиска в существующий запрос с соединениями... Вот что у меня есть:

Я использую специальный метод в репозитории, связанном с сущностью, чтобы добавить соединения к запросу (, чтобы избежать множества запросов ). Контроллер выглядит так:

class ModelController extends Controller
{
    public function indexAction(Request $request)
    {
        //...
        $em = $this->getDoctrine()->getManager();
        $query = $em->getRepository('AcmeDemoBundle:Item')->getList();
    }
}

Метод getListв репозитории выглядит так:

use Doctrine\ORM\EntityRepository;

//...

class ItemRepository extends EntityRepository
{
    public function getList()
    {
        $queryBuilder = $this
            ->createQueryBuilder('i')
            ->innerJoin('i.brand', 'b');

        return $queryBuilder->getQuery();
    }
}

Я создал объект формы ItemSearchTypeс несколькими полями для поиска элементов.

Как я могу легко добавить критерии поиска из данных, представленных в форме поиска, для отображения отфильтрованных элементов?

Вот что в моем контроллере относительно формы поиска:

class ModelController extends Controller
{
    public function indexAction(Request $request)
    {

        //...
        if ($request->getMethod() === 'POST') {
           $searchForm->bindRequest($request);

           if ($searchForm->isValid()) {
               $searchCriteria = $searchForm->getData();

              // Do something with this data!...but I don't know how
           }
     }
}

Спасибо!

6
задан Benjamin 1 September 2012 в 10:38
поделиться