2017-09-18 2 views
0

Ich habe einige Verwirrung darüber, wie ein Filter mit einer Abfrage erstellen und einen Controller, der bereits vorhanden ist (mit KnpPaginator drin)Einfache Filter in symfony, wenn Abfrage und Steuerung bereits vorhanden

ich in meinem Repo habe eine Abfrage, Suche durch etwas, und in meinem Controller zwei Funktionen private genannt resultsAction und eine public eine offreAction genannt, die beide zusammen sind.

Gibt es eine Idee, wie man einen einfachen Filter erstellt? Ich folgte diesem tutorial, aber meine Abfrage existiert bereits in meinem Repo und es hat nicht funktioniert, als ich es anwendete.

Mein Repo

public function getQueryByTypeAndPro($type, User $user, $archive) 
{ 
    return $this->createQueryBuilder("opn") 
     ->andWhere("opn.type = :type") 
     ->setParameter("type", $type) 
     ->andWhere("opn.resellerId = :reseller") 
     ->setParameter("reseller", $user->getId()) 
     ->andWhere("opn.archive = :archive") 
     ->setParameter('archive', $archive) 
     ->orderBy("opn.dateCreation", "DESC") 
     ->getQuery() 
    ; 
} 

mein Controller

private function resultsAction(Request $request, User $user, $type, $archive) 
    { 
     $em = $this->getDoctrine()->getManager(); 

     $paginator = $this->get('knp_paginator'); 

     $qb = $em->getRepository("STUserBundle:Operation")->getQueryByTypeAndPro($type, $user, $archive); 

     $results = $paginator->paginate(
      $qb, 
      $request->query->get('page',1), 
      $request->query->get('limit',50), 
      [ 
       'defaultSortFieldName'  => 'opn.dateCreation', 
       'defaultSortDirection' => 'desc' 
      ] 
     ); 

     return array("results" => $results, "archive" => $archive); 
    } 

public function offreAction(Request $request, User $user, $archive = false) 
    { 
     return $this->resultsAction($request, $user, Operation::OFFRE_COMMERCIALE, $archive); 
    } 

Soll ich eine neue Funktion (public) in meinem Controller erstellen, um diese Arbeit zu machen? oder kann ich es direkt in resultsAction tun, wo KnpPaginator ist?

Danke

Antwort

0

ich mein Problem behoben. Hier ist die Antwort

Hier ist meine Abfrage, wo ich den Filter hinzugefügt

public function getQueryByTypeAndPro($type, User $user, $archive, $filter) 
{ 
    return $this->createQueryBuilder("opn") 
     ->andWhere("opn.type = :type") 
     ->setParameter("type", $type) 
     ->andWhere("opn.resellerId = :reseller") 
     ->setParameter("reseller", $user->getId()) 
     ->andWhere("opn.archive = :archive") 
     ->setParameter('archive', $archive) 
     ->andWhere('opn.vehiculeMarque like :vehiculeMarque') 
     ->setParameter('vehiculeMarque', '%' . $filter . '%') 
     ->andWhere('opn.id like :id') 
     ->setParameter('id', '%' . $filter . '%') 
     ->orderBy("opn.dateCreation", "DESC") 
     ->getQuery() 
    ; 
} 

Hier ist, wie ich es in der Steuerung verwenden

$qb = $em->getRepository("STUserBundle:Operation")->getQueryByTypeAndPro($type, $user, $archive, $filter); 

und hier ist, wie ich es verwenden in meinem Ansicht

<form action="" method="get"> 
     <input name="filter" type="text"> 
     <button type="submit" class="btn btn-default">Filtrer</button> 
</form> 

Hoffnung, dass

hilft
0

Sie FindBy Funktion i-e können

$em->getRepository("STUserBundle:Operation")->findBy(array('type'=>type,'resellerId'=>resellerId,'archive'=>archive),array('dateCreation'=>DESC)) 
+0

Hallo und danke für Ihre Hilfe. aber es funktioniert nicht. 'findBy (array ('typ' => typ, 'resellerId' => resellerId, 'archiv' => archiv), array ('dateCreation' => DESC))' zeige typ, resellerId und archiviere als 'undefinierte konstante' I weiß nicht, wie kann ich tun –

+0

undefined Konstante bedeutet, dass Sie Ihre Variablen nicht initialisiert haben. Bitte initialisieren Sie Ihre Variable, dann wird es sicher funktionieren. Nur um hart codierte Werte von Variablen zu debuggen. –

+0

Wo und wie kann ich sie initialisieren, wenn mein Controller, meine Abfrage und Argumente bereits existieren? :/Ich bin ein wenig neu in der Codierung Ich verstehe nicht alles –

Verwandte Themen