如何在Symfony中重置表单

时间:2016-07-12 09:03:14

标签: php forms symfony

如何在提交后重置表单?它是一个简单的搜索表单,我在顶部显示一个字段,在底部显示一个表格,显示基于搜索的结果或整个列表...但它没有重置,搜索键保持不变.. 。

/**
 * @Route("/", name="plazas_index")
 */
public function indexAction(Request $request)
{
    $form = $this->createForm('AppBundle\Form\BuscarType');
    $form->handleRequest($request);

    $repository = $this->getDoctrine()->getRepository('AppBundle:Plaza');

    if ($form->isSubmitted() && $form->isValid()) {

        $clave = $form['clave']->getData();

        $query = $repository->createQueryBuilder('p')
            ->where('p.nombre LIKE :nombre')
            ->orWhere('p.localidad LIKE :localidad')
            ->setParameter('nombre', '%'.$clave.'%')
            ->setParameter('localidad', '%'.$clave.'%')
            ->orderBy('p.nombre', 'ASC')
            ->getQuery();

        $plazas = $query->getResult();
        $cant = count($plazas);

        $this->addFlash($cant ? 'success' : 'warning', 'La búsqueda de '.$clave. ' ha producido '.$cant.' resultados');
        //return $this->redirectToRoute('plazas_index');
    }
    else {
        $plazas = $repository->findAll();
    }

    unset ($form);
    $form = $this->createForm('AppBundle\Form\BuscarType');
    $form->handleRequest($request);
    return $this->render('admin/plazas/index.html.twig', array(
        'plazas' => $plazas,
        'buscar_form' => $form->createView(),
    ));
}

我无法重定向,因为我在动作结束时执行渲染... 欢迎任何帮助,谢谢!!

1 个答案:

答案 0 :(得分:3)

删除第二条$form->handleRequest($request);行,你就可以了!

handleRequest获取提交的POST或GET数据并将其应用于表单,因此如果您想要一个空白表单,那么您就不应该调用它。