1

サイレックスでフォームを処理した後、同じ 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 に答える