我正在使用symfony2建立一个网站,我在表单validaiton上遇到了一些麻烦。似乎我的表单上的方法“isValid()”从未被调用过:
继承人是我的表格创作:
public function createAction(Request $ request) { $ pro = new Professionnel(); $创建= FALSE;
$form = $this->createFormBuilder($pro)
->add("raison_sociale",null,array("label"=>"Raison sociale * : "))
->add("siret",null,array("label"=>"N° SIREN * : "))
->add("nom",null,array("label"=>"Nom *: "))
->add("prenom",null,array(
"label"=>"Prénom *: "
))
->add("adresse",null,array(
"required"=>false,
"label"=>"Adresse : "
))
->add("code_postal","text",array(
"required"=>false,
"label"=> "Code Postal : "
))
->add("ville",null,array(
"required"=>false,
"label"=> "Ville : "
))
->add("tel",null,array("label"=>"Téléphone * : ","required"=>true))
->add("mobile",null,array(
"required"=>false,
"label"=>"Mobile : "
))
->add("fax",null,array(
"required"=>false,
"label"=>"Fax : "
))
->add("email","email",array("label"=>"Email * : "))
->add("username",null,array("label"=>"Login * : "))
->add("password","password",array("label"=>"Mot de passe * : "))
->add("newsletter",null,array("required"=>false,"label"=>"Je souhaite m'inscrire à la newsletter"))
->add("accept","checkbox",array("label"=>" "))
->getForm()
;
if ($request->isMethod("POST"))
{
$form->bind($request);
if ($form->isValid())
{
$em=$this->getDoctrine()->getEntityManager();
$pro=$form->getData();
$encoder = $this->get('security.encoder_factory')->getEncoder($pro);
$pro->setPassword($encoder->encodePassword($pro->getPassword(),$pro->getSalt()));
$em->persist($pro);
$em->flush();
$created=true;
$this->get("session")->getFlashBag()->add("success", "Votre compte a bien été créé. Vous avez reçu un mail confirmant votre inscritpion.");
}
}
return $this->render('OverscanProfessionnelBundle:Front:create.html.twig',array('form'=>$form->createView(),'created'=>$created));
}
这是我的validatio.yml:
webapp\ProfessionnelBundle\Entity\Professionnel:
constraints:
Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity:
fields: email
message: "L'email est déjà pris"
Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity:
fields: username
message: "Ce login est déjà pris"
properties:
raison_sociale:
- Valid:
siret:
- Length:
min : 9
max : 9
minMessage: "Le SIREN doit contenir 9 caractères"
maxMessage: "Le SIREN doit contenir 9 caractères"
- Regex:
pattern: "/\d/"
match: true
message: "Le SIREN ne doit pas contenir de lettre"
tel:
- Length:
min : 10
max : 10
minMessage: "Le numéro de téléphone doit contenir 10 chiffres"
maxMessage: "Le numéro de téléphone doit contenir 10 chiffres"
所以当我发布我的表单时,没有调用验证,但约束是! 有谁可以帮助我吗 ?
答案 0 :(得分:3)
看一下你的“ app /../ config.yml ” 你应该看到这样的东西:
framework:
...
validation: { enable_annotations: true }
将其设置为:
framework:
...
validation: { enabled: true, enable_annotations: true }
然后,你的validation.yml应该加载!
答案 1 :(得分:0)
尝试将数据类添加到表单中,如下所示:
$this->createFormBuilder($entity, array(
'data_class' => '\Vendor\YourBundle\Entity\MyEntity',
)
)
// -> add()