여러 기준으로 검색 양식을 만들려고하는데 작동하지 않으며 페이지를 다시 제출하기 만하면 페이지가 다시로드되기 때문에 컨트롤러가 양식을받지 못한다고 생각합니다. 여러 기준, Symfony2로 양식 검색
이
은 컨트롤러/**
* @ParamConverter("agence", options={"mapping": {"agence_slug":"slug"}})
*/
public function indexAction(Agence $agence, Request $request)
{
$form = $this->createForm(new SearchTravelType());
$request = $this->getRequest();
$em = $this->getDoctrine()->getManager();
if ($request->getMethod() == 'POST')
{
$form->bind($request);
if ($form->isValid())
{
$criteria = $form->getData();
$listTravels = $em->getRepository('ProjectTravelBundle:Travel')->getListBy($criteria, $agence);
}
}
$listTravels = $em->getRepository('ProjectTravelBundle:Travel')->findByAgence($agence);
return $this->render('ProjectDashboardBundle:Travel:index.html.twig',
array(
'listTravels' => $listTravels,
'agence' => $agence,
'form' => $form->createView() ,
));
}
이며, 이는 queryBuilder
class TravelRepository extends EntityRepository
{
public function getListBy($criteria, $agence)
{
$qb = $this->createQueryBuilder('t');
$qb = $this->whereAgence($qb, $agence);
$qb ->leftJoin('t.airport', 'a')
->addSelect('a');
foreach ($criteria as $field => $value) {
if (!$this->getClassMetadata()->hasField($field)) {
// Make sure we only use existing fields (avoid any injection)
continue;
}
$qb ->andWhere($qb->expr()->eq('t.'.$field, ':t_'.$field))
->setParameter('t_'.$field, $value);
}
return $qb->getQuery()->getResult();
}
public function whereAgence (\Doctrine\ORM\QueryBuilder $qb, $agence)
{
$qb->where('a.agence = :agence')
->setParameter('agence', $agence);
return $qb;
}
}
이며,이
<form class="form-horizontal" role="form" method="post" >
<td>{{ form_widget(form.id) }}</td>
<td class="center">-</td>
<td>{{ form_widget(form.title) }}</td>
<td>{{ form_widget(form.country) }}</td>
<td>{{ form_widget(form.destination) }}</td>
<td>{{ form_widget(form.airport) }}</td>
<td>{{ form_widget(form.departureDate) }}</td>
<td>{{ form_widget(form.returnDate) }}</td>
<td>{{ form_widget(form.price) }}</td>
<td>{{ form_widget(form.enabled) }}</td>
<td><span class="input-group-btn">
<button type="submit" class="btn btn-purple btn-sm">Search
<i class="icon-search icon-on-right bigger-110"></i></button>
</span>
</form>
내가 생각 페이지 나뭇 가지와 양식입니다 첫 프로 blem 양식 컨트롤러에서 회복되지 않는 것입니다, 내가주는 것을보고 대신
$listTravels = $em->getRepository('ProjectTravelBundle:Travel')->find(1);
getListBy($criteria, $agence)
로했습니다. 컨트롤러는 양식을 무시하고 당신이 작업에 요청 객체를 전달하는 것처럼 행동에서 $request = $this->getRequest();
을 제거 할 수있는 다음과 같은 쿼리
$listTravels = $em->getRepository('ProjectTravelBundle:Travel')->findByAgence($agence);
작동하지 않습니다. :/ – hous
@hous 어떤 버전을 사용하고 있습니까? – xurshid29
symfony 2.5 버전 – hous