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;
}
}