Silex第二种形式落后于第一种形式

时间:2016-08-27 18:03:47

标签: php forms validation symfony silex

我想做的很简单。我有第一张表格。提交此表单时,我有另一个表单。提交第二个表单时,我想执行一些操作。

所以这是我的控制器简化:

$app->post('/path', function(Request $request) use ($app) {
    $app['request'] = $request;

    $token = $app['security.token_storage']->getToken();
    if (null !== $token) {
        $user = $token->getUser();


        // First form
        $form = $app['form.factory']->createBuilder(FormType::class)
        ->add('field_form1', TextType::class, [
            'required' => true,
        ])
        ->getForm();


        // Second form
        $formcb = $app['form.factory']->createBuilder(FormType::class)
        ->add('field_form2', TextType::class, [
            'required' => true,
        ])
        ->getForm();


        // When second form is submitted
        $formcb->handleRequest($request);

        if($formcb->isSubmitted() && $formcb->isValid()) {
            // isValid is never true

            $data = $formcb->getData();
        }


        // When first form is submitted
        $form->handleRequest($request);

        if($form->isSubmitted() && $form->isValid()) {
            $data = $form->getData();

            switch ($data["paiementType"]) {
                [...]

                case 'mycase':
                    // Render of the second form
                    return $app['twig']->render('page2.twig', [
                        'form' => $formcb->createView(),
                    ]);

                default: break;
            }
        }

        // Render of the first form
        return $app['twig']->render('page1.twig', [
            'form' => $form->createView(),
        ]);

    }

})->bind('path');

但是,

  • 第一种形式没有问题,效果很好。

  • 第二种形式似乎在渲染时已经过验证,因为字段错误消息显示在表单上。

  • 当我提交第二个表单时,我从不输入if($ formcb-> isSubmitted()&& $ formcb-> isValid()){子句,因为isValid永远不会为真。 ..但是,表格已提交......

所以我不知道出了什么问题,也许这不是在另一个表单后面呈现表单的好方法......

0 个答案:

没有答案