Validation 确认密码字段未使用'验证;重复';在symfony2中使用表单生成器的字段?

Validation 确认密码字段未使用'验证;重复';在symfony2中使用表单生成器的字段?,validation,passwords,symfony,twig,formbuilder,Validation,Passwords,Symfony,Twig,Formbuilder,这就是我的代码片段的样子 //---这是我控制器中的代码---- $registrationForm=$this->createFormBuilder() ->添加('电子邮件') ->添加('password','repeated',array('type'=>'password','invalid_message'=>'密码不匹配')) ->getForm(); 返回$this->render('AcmeHelloBundle:Default:index.html.twig',array('

这就是我的代码片段的样子

//---这是我控制器中的代码----

$registrationForm=$this->createFormBuilder()
->添加('电子邮件')
->添加('password','repeated',array('type'=>'password','invalid_message'=>'密码不匹配'))
->getForm();
返回$this->render('AcmeHelloBundle:Default:index.html.twig',array('form'=>$registrationForm->createView());
//---这是细枝文件代码----
{{form_errors(form)}}
{{form_行(form.email,{'label':'E-Mail:'}}}}
{{form_errors(form.password)}}
{{form_行(form.password.first,{'label':'Your password:'}}}}
{{form_行(form.password.second,{'label':'Repeat password:'}}}}
{{form_rest(form)}

有人能解释一下为什么它不能使用form builder吗?

在Symfony 2中,验证由域对象处理。因此,您必须将实体(域对象)传递给表单

控制器中的代码:

public function testAction()
{
    $registration = new \Acme\DemoBundle\Entity\Registration();
    $registrationForm = $this->createFormBuilder($registration)
            ->add('email')
            ->add('password', 'repeated', array('type' => 'password', 'invalid_message' => 'Passwords do not match'))
            ->getForm();

    $request = $this->get('request');
    if ('POST' == $request->getMethod()) {
        $registrationForm->bindRequest($request);
        if ($registrationForm->isValid()) {
            return new RedirectResponse($this->generateUrl('registration_thanks'));
        }
    }

    return $this->render('AcmeDemoBundle:Demo:test.html.twig', array('form' => $registrationForm->createView()));
}
1) 表单生成器将表单字段与实体的属性进行映射,并将表单字段值与实体属性值进行匹配

$registrationForm = $this->createFormBuilder($registration)...
2) 绑定将使表单字段值与所有发布的数据保持一致

$registrationForm->bindRequest($request);
3)启动验证

$registrationForm->isValid()
4) 如果发布的数据有效,您必须重定向到一个操作,通知用户一切正常,以避免显示来自您的兄弟的警告消息,他们询问您是否确定要重新发布数据

return new RedirectResponse($this->generateUrl('registration_thanks'));
实体代码:

<?php

namespace Acme\DemoBundle\Entity;

class Registration
{
    private $email;

    private $password;

    public function getEmail()
    {
        return $this->email;
    }

    public function setEmail($email)
    {
        $this->email = $email;
    }

    public function getPassword()
    {
        return $this->password;
    }

    public function setPassword($password)
    {
        $this->password = $password;
    }
}

在Symfony 2中,验证由域对象处理。因此,您必须将实体(域对象)传递给表单

控制器中的代码:

public function testAction()
{
    $registration = new \Acme\DemoBundle\Entity\Registration();
    $registrationForm = $this->createFormBuilder($registration)
            ->add('email')
            ->add('password', 'repeated', array('type' => 'password', 'invalid_message' => 'Passwords do not match'))
            ->getForm();

    $request = $this->get('request');
    if ('POST' == $request->getMethod()) {
        $registrationForm->bindRequest($request);
        if ($registrationForm->isValid()) {
            return new RedirectResponse($this->generateUrl('registration_thanks'));
        }
    }

    return $this->render('AcmeDemoBundle:Demo:test.html.twig', array('form' => $registrationForm->createView()));
}
1) 表单生成器将表单字段与实体的属性进行映射,并将表单字段值与实体属性值进行匹配

$registrationForm = $this->createFormBuilder($registration)...
2) 绑定将使表单字段值与所有发布的数据保持一致

$registrationForm->bindRequest($request);
3)启动验证

$registrationForm->isValid()
4) 如果发布的数据有效,您必须重定向到一个操作,通知用户一切正常,以避免显示来自您的兄弟的警告消息,他们询问您是否确定要重新发布数据

return new RedirectResponse($this->generateUrl('registration_thanks'));
实体代码:

<?php

namespace Acme\DemoBundle\Entity;

class Registration
{
    private $email;

    private $password;

    public function getEmail()
    {
        return $this->email;
    }

    public function setEmail($email)
    {
        $this->email = $email;
    }

    public function getPassword()
    {
        return $this->password;
    }

    public function setPassword($password)
    {
        $this->password = $password;
    }
}