【问题标题】:Can't understand how form validation works in symfony无法理解表单验证在 symfony 中是如何工作的
【发布时间】:2016-11-25 10:52:56
【问题描述】:

我阅读了有关验证表单的部分文档,但仍然无法理解表单验证的工作原理。

我尝试通过表单验证请求的数据,但没有错误。

我想验证密码确认,所以我在UserType.php 中使用以下代码:

$builder
        ->add('username')
        ->add('password', RepeatedType::class, [
            'first_name' => 'password',
            'second_name' => 'password_confirmation',
            'required' => true,
            'invalid_message' => 'The password fields must match.'
        ]);

接下来我尝试通过以下方式验证我的表单数据:

$user = $userManager->createUser();
$form = $this->createForm(UserType::class, $user, ['method' => 'POST']);
$form->submit($request->request->all());

$form->isValid(); // return true
$form->getErrors(); // return no errors

编辑: 问题已解决。我的 FOSRestBundle 配置错误

【问题讨论】:

    标签: php forms validation symfony


    【解决方案1】:
     $form->isValid() 
    

    是一个函数,它不会验证表单,而是会在表单有效时执行一系列任务。所以当用户提交表单时,数据需要发生什么

    示例:

       if($form->isValid()){
            $em=$this->getDoctrine()->getManager();
            $user->setFirstName($data['firstname']) // use name of field
            $em->persist($user);
    
            $em->flush();
    
            return $this->redirectToRoute('your_route', array(
                'needed variable'=> $user_id
            ));
        }
    

    所以您主要做的是从 symfony 表单中获取数据并将其存储在您的数据库中,然后您可以重定向到您希望用户登陆的新网页。您还可以添加 addflash() 消息以显示它是否有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-18
      • 1970-01-01
      相关资源
      最近更新 更多