के साथ एक खोज फ़िल्टर फ़ॉर्म को कैसे कार्यान्वित करें मेरे पास किसी भी सामान्य बैकएंड की तरह इन वस्तुओं को फ़िल्टर करने के लिए उपरोक्त एक खोज फ़ॉर्म के साथ एक पृष्ठ पर प्रदर्शित करने के लिए आइटमों की एक सूची है। समस्या यह है कि मुझे नहीं पता कि मौजूदा क्वेरी में खोज मानदंडों को जोड़ना है ... यहां मेरे पास है:Symfony2
मैं इकाई से जुड़े भंडार पर एक विशिष्ट विधि का उपयोग करता हूं ताकि जोड़ों में शामिल हो सकें क्वेरी (कई प्रश्नों से बचने के लिए)। नियंत्रक इस तरह दिखता है:
class ModelController extends Controller
{
public function indexAction(Request $request)
{
// ...
$em = $this->getDoctrine()->getManager();
$query = $em->getRepository('AcmeDemoBundle:Item')->getList();
}
}
भंडार पर getList
विधि इस प्रकार है:
use Doctrine\ORM\EntityRepository;
// ...
class ItemRepository extends EntityRepository
{
public function getList()
{
$queryBuilder = $this
->createQueryBuilder('i')
->innerJoin('i.brand', 'b');
return $queryBuilder->getQuery();
}
}
मैं मदों के लिए खोज करने के लिए कई क्षेत्रों के साथ एक ItemSearchType
प्रपत्र वस्तु बनाया।
फ़िल्टर किए गए आइटम प्रदर्शित करने के लिए खोज फ़ॉर्म में प्रदान किए गए डेटा से आसानी से खोज मानदंड कैसे जोड़ सकते हैं?
यह वही खोज प्रपत्र के विषय में मेरी नियंत्रक में है:
class ModelController extends Controller
{
public function indexAction(Request $request)
{
// ...
if ($request->getMethod() === 'POST') {
$searchForm->bindRequest($request);
if ($searchForm->isValid()) {
$searchCriteria = $searchForm->getData();
// Do something with this data! ...but I don't know how
}
}
}
धन्यवाद!
की आवश्यकता है यह सबसे अच्छा जवाब है। LexikFormFilterBundle एक इकाई फ़िल्टरिंग की समस्या हल करता है। AdrienBrault का जवाब भी काम करेगा, लेकिन i.e. daterange द्वारा फ़िल्टरिंग करने में सक्षम नहीं है। –
LexikFormFilterBundle के साथ सलाह के लिए धन्यवाद मैं फिल्टर प्रश्नों में सभी और Wheres के बीमार हो रहा था। फिल्टर बंडल वहाँ बहुत सारे काम और जटिलता बचाता है :) – Sharpy35