symfony搜索表单呈现所有结果

时间:2017-04-15 23:57:19

标签: forms symfony search controller query-builder

我想使用querybuilder执行一个过滤器所以一切正常但是当我点击过滤器时没有任何事情发生并且总是如此重新设置所以这里是左边页面的图片我提交了一个表单我希望它显示如果用户没有进入表格页面显示所有车辆,则使用用户输入的信息在右侧找到车辆。在这两种情况下,用户应该只看到价格不为0的车辆。这有什么问题?

enter image description here

这是我的控制器:

$filterForm = $this->createForm('SpoiledCar\FrontOfficeBundle\Form\VoitureType3');

$em = $this->getDoctrine()->getManager();
$voiturefind = $em->getRepository('SpoiledCarFrontOfficeBundle:Voiture')
                        ->myFindAll($filterForm);
$voitures  = $this->get('knp_paginator')->paginate($voiturefind,$this->get(
    'request')->query->get('page', 1),6
); 
$filterForm->handleRequest($request);

if ($filterForm->isSubmitted() && $filterForm->isValid()) {
      return $this->render('FOSUserBundle:Profile:listTable.html.twig', array(
            'voitures' => $voitures,
                'filterForm' => $filterForm->createView(),
    ));
}
return $this->render('FOSUserBundle:Profile:listTable.html.twig', array(
        'voitures' => $voitures,
        'filterForm' => $filterForm->createView(),
));

这是我的资料库

$qb = $this->createQueryBuilder('u')->Where('u.prix IS NOT NULL');

if ($filterForm->has('marque')) {
    $qb->leftJoin('u.marque', 'm')
        ->andWhere( $qb->expr()
        ->like('m.nomMarque', ':marque'))
        ->setParameter('marque', '%'. $filterForm->get('marque')->getData().'%'); 
}
if ($filterForm->has('modele')) {
    $qb->leftJoin('u.modele', 'n')
        ->andWhere( $qb->expr()->like('n.nom', ':modele'))
        ->setParameter('modele', '%'. $filterForm->get('modele')->getData().'%');
}


if ($filterForm->has('boitevitesse')) {
    $qb->andWhere( $qb->expr()->like('u.boitevitesse', ':boitevitesse'))
    ->setParameter('boitevitesse', '%'. $filterForm->get('boitevitesse')->getData().'%');
}

if ($filterForm->has('chevaux')) {
    $qb->andWhere( $qb->expr()->like('u.chevaux', ':chevaux'))
        ->setParameter('chevaux', '%'. $filterForm->get('chevaux')->getData().'%');
}

return $qb->getQuery()->getResult();

0 个答案:

没有答案