Tôi có danh sách các mục để hiển thị trên trang, với biểu mẫu tìm kiếm phía trên trang để lọc các mục này, như trong bất kỳ chương trình phụ trợ thông thường nào. Vấn đề là tôi không biết cách thêm tiêu chí tìm kiếm vào truy vấn hiện có với các tham gia ... Đây là những gì tôi có:Cách triển khai biểu mẫu bộ lọc tìm kiếm với Symfony2
Tôi sử dụng một phương pháp cụ thể trên kho lưu trữ được liên kết với thực thể để thêm tham gia trên truy vấn (để tránh nhiều truy vấn). Bộ điều khiển trông như thế này:
class ModelController extends Controller
{
public function indexAction(Request $request)
{
// ...
$em = $this->getDoctrine()->getManager();
$query = $em->getRepository('AcmeDemoBundle:Item')->getList();
}
}
Phương pháp getList
trên kho trông như thế này:
use Doctrine\ORM\EntityRepository;
// ...
class ItemRepository extends EntityRepository
{
public function getList()
{
$queryBuilder = $this
->createQueryBuilder('i')
->innerJoin('i.brand', 'b');
return $queryBuilder->getQuery();
}
}
Tôi tạo ra một đối tượng ItemSearchType
mẫu với một số lĩnh vực để tìm kiếm cho các hạng mục.
Làm cách nào tôi có thể dễ dàng thêm tiêu chí tìm kiếm từ dữ liệu được cung cấp trong biểu mẫu tìm kiếm để hiển thị các mục được lọc?
Đây là những gì trong bộ điều khiển của tôi liên quan đến các hình thức tìm kiếm:
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
}
}
}
Cảm ơn!
Đây là câu trả lời hay nhất. LexikFormFilterBundle giải quyết vấn đề lọc một thực thể. Câu trả lời của AdrienBrault cũng sẽ hoạt động, nhưng không thể lọc được bằng cách sử dụng daterange. –
Cảm ơn lời khuyên với LexikFormFilterBundle tôi đã bị bệnh của tất cả các andWheres trong các truy vấn bộ lọc. gói bộ lọc tiết kiệm rất nhiều công việc và biến chứng ở đó :) – Sharpy35