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 }
puoi incollare la tua voce di routing che è collegata a 'trackAction()'? – DevDonkey
@MattHB: aggiornato già – Errorhere
è una stringa di query che fornisce '{page}'? sei sicuro che venga trasportato nel controller correttamente dopo aver premuto i pulsanti indietro? – DevDonkey