0

我正在为我的用户做一个搜索页面。表单显示在路径/home 中,收集的数据发送到路径/search。这些用于进行我在 /search 中显示的搜索。问题是,如果表单在 /search 处处理并且存在任何验证错误,则表单将在 /search 而不是 /home 中重新加载。有没有办法得到这个?

//routing.yml

home:
path:  /
defaults: { _controller: UsuarioBundle:Default:home}

search:
path:  /search
defaults: { _controller: UsuarioBundle:Default:search}

.

//UsuarioBundle/Controller/DefaultController.php

public function homeAction()
{
    $request = $this->getRequest();
    $usuario = new Usuario();
    $formulario = $this->createForm(new UsuarioBusquedaType(), $usuario, array(
                                                                    'action' => $this->generateUrl('search'),
                                                                    'method' => 'POST',
                                                                    ));
return $this->render('UsuarioBundle:Default:portada.html.twig', array('formulario' => $formulario->createView() ));
}

public function searchAction()
{
    $request = $this->getRequest();
    $usuario = new Usuario();
    $formulario = $this->createForm(new UsuarioBusquedaType(), $usuario, array(
                                                                    'action' => $this->generateUrl('search'),
                                                                    'method' => 'POST',
                                                                    ));
    $formulario->handleRequest($request);
    if ($formulario->isValid()) {
         // Validate and search in DB
         return $this->render('UsuarioBundle:Default:resultado.html.twig', array('usuarios' => $usuarios));
    }
    return $this->render('UsuarioBundle:Default:portada.html.twig', array('formulario' => $formulario->createView() ));

我也尝试过这样做:显示表单并在同一路径 /home 中处理它,然后通过重定向发送数据,但我不知道如何将数据传递到新路由。任何想法?

提前致谢。

4

1 回答 1

0

你可以尝试这样的事情:

if ($formulario->isValid()) {
     // Validate and search in DB
     return $this->render('UsuarioBundle:Default:resultado.html.twig', array('usuarios' => $usuarios));
}
return $this->homeAction();
于 2013-11-15T02:37:13.017 回答