リストに表示されているエンティティを制限するフィルタフォームを作成しました。 これはPOSTによって動作します。状態を覚えておく必要があります。そのため、ページをレバして後で戻ったときに、あなたが離したときと同じフィルタが表示されます。コントローラにフォームの値を入力してください
私はセッションにフィルタを保存し、POSTを使用しないときにそれらをロードしました。フィルターは素晴らしいです。 しかし、フォームには値が表示されません。私は、フォームをバインドする前に、要求値を更新するtriingていますが、これは動作していない、私はなぜか分からない...
$filterForm = $this->createForm(new TourFilter($this->container, $destinations));
$session = $this->getRequest()->getSession();
if ($request->getMethod() == 'POST') {
//This is when I get the request (POST) values to do the filtering
$filterForm->bindRequest($request);
$params = $request->request->get('buv_marketplacebundle_tourfilter');
//in parseFilerParams I do some validation and transforming parameters
$filters = $this->parseFilterParams($params, $base_filters);
//store current params in the session
$session->set('tour_filters', $params);
} else {
//get parameters from the session
$params = $session->get('tour_filters');
if (is_array($params) && count($params) > 0) {
//update the request with the parameters from the session
$request->request->replace(array('buv_marketplacebundle_tourfilter' => $params));
//bind the updated request to the form
$filterForm->bindRequest($request);
$filters = $this->parseFilterParams($params, $base_filters);
} else {
$filters = $base_filters;
}
}
//search for the entities
$entities = $em->getRepository('BuvMarketplaceBundle:Tour')->getFilteredTours($filters);
いいえ、単純に$ filterForm-> setData($ params)のような形式でデータをプッシュする必要がありました。あなたが説明したようにbindRequestの代わりに。できます。トランク。 – Sergi