jmunozco
jmunozco

Reputation: 695

How to reset form in Symfony

How can I reset the form after submit? It's a simple search form where I show a field on the top and a table in the bottom that shows either the results based on the search or the whole list... but it does not reset, the search key remained...

/**
 * @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(),
    ));
}

I can't redirect because I do the render at the end of the action... Any help is welcome, thanks!!

Upvotes: 3

Views: 3508

Answers (1)

Emanuel Oster
Emanuel Oster

Reputation: 1296

Remove the second $form->handleRequest($request); line and you are good to go!

handleRequest takes the submitted POST or GET data and applies it to the form, so if you want a blank form then you shouldn't call that.

Upvotes: 5

Related Questions