[英]How can I display and at the same time can search in symfony2?
我正在使用symfony2進行項目。 我有一個搜索功能,分頁,同時只在一個存儲庫功能中顯示所有事務。 一切正常,直到我發現,每當我轉到我網站的其他標簽並再次返回我的軌道頁面時,它返回“未找到結果”而不是顯示所有交易。 但是,當我單擊搜索按鈕時,它再次顯示所有事務,但是再次,當我單擊分頁按鈕時,它再次返回我沒有找到結果。 我認為我的代碼確實存在沖突。 我不知道它在哪里。 我希望有人可以幫助我。
這是我的存儲庫代碼:
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
調節器
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 }
您的網址不同: /track?match=all&refNumber=&direction=&docType=&startDate=&senderId=&endDate=&gsNumber=&receiverId=&submit=
上面顯示了所有需要的參數,但是當你回去的時候
track/2
是你的網址,你缺少所需的所有參數。
在您的后面功能的某處,您不提供所有必需的參數
只需在模板中定義form方法並將其設置為“get”或從標記中刪除此屬性(方法)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.