2015-08-07 11 views
6

Sto lavorando su un progetto usando symfony2. Ho una funzione di ricerca, l'impaginazione e lo stesso tempo visualizzano tutte le transazioni in una sola funzione di repository. Tutto funziona bene fino a quando non scopro che, ogni volta che vado in un'altra scheda del mio sito Web e torno di nuovo alla mia pagina di traccia, mi restituisce "NO risultato trovato" invece di visualizzare tutta la transazione. Ma quando clicco sul pulsante di ricerca viene nuovamente visualizzata tutta la transazione, ma poi di nuovo, quando faccio clic sul pulsante di impaginazione, mi restituisce nuovamente il risultato non trovato. Penso che ci sia davvero un conflitto nel mio codice. Non so dove sia. Spero che qualcuno possa darmi una mano.Come posso visualizzare e allo stesso tempo posso cercare in symfony2?

Ecco il mio codice repository:

public function getAllTransaction($rNumber,$startDate,$endDate,$gNumber,$senderId,$receiverId,$docType,$direction,$page = 1, $limit = 10) { 
     $em = $this->getEntityManager(); 
     $query = $em->createQuery(
      'SELECT partial a.{supplierTransactionDetailId, rNumber, pNumber, invNumber, anNumber, adNumber, amount}, 
      partial b.{supplierTransactionId, transactionDate, senderId, receiverId, isaNumber, gsNumber, fileName}, 
      partial c.{supplierDocTypeId, docType, direction} 
      FROM SupplierBundle:SupplierTransactionDetail a 
      JOIN a.supplierTransaction b 
      JOIN b.supplierDocType c 
      WHERE (a.rNumber LIKE :rNumber OR a.pNumber LIKE :rNumber 
        OR a.invNumber LIKE :rNumber 
        OR a.anNumber LIKE :rNumber 
        OR a.adNumber LIKE :rNumber) 
      AND ((:startDate = \'\' OR :endDate = \'\') OR 
      (b.transactionDate BETWEEN :startDate AND :endDate)) 
      AND b.gsNumber LIKE :gsNumber 
      AND b.senderId LIKE :senderId 
      AND b.receiverId LIKE :receiverId 
      AND c.docType LIKE :docType 
      AND c.direction LIKE :direction 


      ORDER BY b.transactionDate desc' 
     ) 
      ->setParameter('rNumber', $rNumber) 
      ->setParameter('startDate', $startDate) 
      ->setParameter('endDate', $endDate) 
      ->setParameter('gsNumber', $gsNumber) 
      ->setParameter('senderId', $senderId) 
      ->setParameter('receiverId' , $receiverId) 
      ->setParameter('docType',$docType) 
      ->setParameter('direction', $direction) 
      ->setFirstResult(($page - 1) *$limit) 
      ->setMaxResults($limit); 

     $paginator = new Paginator ($query, $fetchJoinCollection = false); 
     $paginator->setUseOutputWalkers(false); 

     return $paginator; 
     } 

UPDATE

controller

public function trackAction(Request $request,$page){ 
     $rNumber = $request->query->get('rNumber'); 
     $gsNumber = $request->query->get('gsNumber'); 
     $senderId = $request->query->get('senderId'); 
     $receiverId = $request->query->get('receiverId'); 
     $docType = $request->query->get('docType'); 
     $direction = $request->query->get('direction'); 
     $startDate = $request->query->get('startDate'); 
     $endDate = $request->query->get('endDate'); 

     $max_records = 10; 
     $em = $this->getDoctrine()->getManager(); 
     $trans = $em->getRepository('SupplierBundle:SupplierTransactionDetail')->getAllTransaction($rNumber,$gsNumber,$senderId,$receiverId,$docType,$direction,$startDate,$endDate,$page , 10); 

     $count = $trans->count(); 
     $pagination = array(
      'page' => $page, 
      'route' => 'supplier_tracking', 
      'route_params' => array() 
     ); 

     if ($max_records > 0){ 
      $pagination['pages_count'] = max(ceil($count/$max_records), 1); 
     } 

     return $this->render('SupplierBundle:Supplier:tracking.html.twig',array('trans' => $trans, 'pagination' => $pagination)); 


    } 

UPDATE

supplier_tracking: 
    pattern: /track/{page} 
    defaults: { _controller: "SupplierBundle:Supplier:track" , page: 1 } 
+0

puoi incollare la tua voce di routing che è collegata a 'trackAction()'? – DevDonkey

+0

@MattHB: aggiornato già – Errorhere

+0

è una stringa di query che fornisce '{page}'? sei sicuro che venga trasportato nel controller correttamente dopo aver premuto i pulsanti indietro? – DevDonkey

risposta

0

del tuo URL sono diversi: /track?match=all&refNumber=&direction=&docType=&startDate=&senderId=&endDate=&gsNumber=&receiverId=&submit= gli spettacoli di cui sopra tutti i parametri necessari, ma quando si torna

track/2

è il vostro URL, vi state perdendo tutti i parametri di cui avete bisogno.

qualche parte nel vostro funzionalità di back non forniscono tutti i parametri necessari

+0

sì assolutamente, lo aggiorno appena prima – Errorhere

+0

I update è già – Errorhere

+0

dovrebbe essere un commento – DevDonkey

0

basta definire il metodo modulo nel modello e impostarlo su 'get' o rimuovere questo attributo (metodo) da da tag di sorta.

+0

cosa intendi? – Errorhere

+0

Mi spiace intendevo l'attributo 'metodo'. Assicurati che il tuo modulo abbia l'attributo del metodo impostato su 'ottieni' o non lo abbia affatto. – Alex

+0

Ce l'ho già method = "GET" – Errorhere

Problemi correlati