1

私はフォームを持っていますが、これは通常とは異なるいくつかの検証によって渡される必要があります (約 4 つのフィールドが互いに依存しています)。問題は、失敗したときにユーザーをリダイレクトしますが、フォームの値が失われることです。セッションで実行できることは知っていますが、「より健全な」方法があるかもしれません。コードは通常です:

public function printAction()
{
    if ($this->getRequest()->getMethod() == "POST")
    {
        $form->bindRequest($this->getRequest());
        if ($form->isValid())
        {
             .... more validation.... Failed!
             return $this->redirect($this->generateUrl("SiteHomePeltexStockStockHistory_print"));
             // and this is when I lose the values.... I dont want it
        }
    }
}
4

3 に答える 3

1

あなたはこのようなことをしたいかもしれません

class FooController extends Controller
{
    /**
     * @Route("/new")
     * @Method({"GET"})
     */
    public function newAction()
    {
        // This view would send the form content to /create
        return $this->render('YourBundle:form:create.html.twig', array('form' => $form));
    }

    /**
     * @Route("/create")
     * @Method({"POST"})
     */
    public function createAction(Request $request)
    {
        // ... Code
        if ($form->isValid()) {
            if (/* Still valid */) {
                // Whatever you do when validation passed
            }
        }

        // Validation failed, just pass the form
        return $this->render('YourBundle:form:create.html.twig', array('form' => $form));
    }
}
于 2013-04-08T09:08:37.590 に答える