1

我试图弄清楚如何在 silex 中处理表单后重定向到相同的 url:

public function someAction(Application $app) 
{
    $form = ... // building form

    if ('POST' === $app['request']->getMethod()) {
        $form->bindRequest($app['request']);

        if ($form->isValid()) 
        {
            $url = $app['url_generator']->generate(
                $app['request']->get('_route'),
                $app['request']->get('_route_params')
            );

            return $app->redirect($url);
        }
    }

    return $app['twig']->render(
       'form.html.twig', 
        array(
            'form' => $form->createView()
        )
    );
}

Symfony中是可能的,但在这里不起作用。(当然,我总是可以重定向到类似的东西$url?success

UPD: $url一切正常。关键是,如果您尝试重定向到完全相同的 url,它将无法正常工作。

4

2 回答 2

1

Request 类有一个getRequestUri()方法。你可以像这样使用它:

return $app->redirect($request->getRequestUri());
于 2013-03-06T11:28:08.660 回答
0

很抱歉用另一个问题回答您的问题,但您为什么要重定向到同一页面?您的路线逻辑应该在处理表单后简单地显示您的视图。

public function someAction(Application $app) 
{
    $form = ... // building form

    if ('POST' === $app['request']->getMethod()) {
        $form->bindRequest($app['request']);

        if ($form->isValid()) 
        {
            $url = $app['url_generator']->generate(
                $app['request']->get('_route'),
                $app['request']->get('_route_params')
            );

            //return $app->redirect($url);
            // just remove the return here and you're all set!
        }
    }

    return $app['twig']->render(
       'form.html.twig', 
        array(
            'form' => $form->createView()
        )
    );
}
于 2013-03-11T14:38:47.697 回答