2014-04-06 54 views
0

我有这些验证规则:Symfony2的 - 表单验证失败:形式始终是有效的

Cgboard\SignupBundle\Entity\SignupData 
    properties: 
    email: 
     - NotBlank:~ 
     - MinLength:3  // not validating neither this nor the rest 
    nickname: 
     - NotBlank:~ 
    password: 
     - NotBlank:~ 
    password_repeat: 
     - NotBlank:~ 

我的实体

<?php 
namespace Cgboard\SignupBundle\Entity; 


class SignupData { 
    public $email; 
    public $nickname; 
    public $password; 
    public $password_repeat; 
} 

而且我的控制器:

<?php 
namespace Cgboard\SignupBundle\Controller\Frontend; 

use  Symfony\Component\HttpFoundation\Request; 
use  Symfony\Bundle\FrameworkBundle\Controller\Controller; 

class SignupController extends Controller 
{ 
     ... 

     if($request->getMethod() === 'POST') { 
      $form->bind($request); 
      if($form->isValid()) { 
       $this->save($SignupData); 
      } 
     } 

     ..... 
} 

目前$form->isValid()总是返回true

+0

,和你看到一个错误,或者你只是看到它虽然去,如果该数据是空白的? –

+0

Ei Derick,即时通讯使用版本2.我没有看到错误,只是该方法是有效的所有时间传递,就像它是否一直返回真实。 –

+0

您的验证文件中是否真的有2个空格(而不是4个)缩进?包含验证映射的yaml文件在哪里存储以及它的名称如何?顺便说一句。你清除了缓存吗?你的动作是否有请求作为参数 - 'yourAction(Request $ request)'? ...提供**全部**必要的代码部分和文件路径,以便下次重现问题。 – nifr

回答

0

确保validation.yml文件位于Cgboard/SignupBundle/Resources/config目录中,因为nifr提到清除缓存。也尝试使用以下方式看,以验证它,如果它真的工作是否使用的是交响乐的版本

$testobj = new SignupData(); 

    $validator = $this->get('validator'); 
    $errors = $validator->validate($testobj); 


    if (count($errors) > 0) { 

     return new Response(print_r($errors, true)); 
    } else { 
     return new Response('The testobj is valid! Yes!'); 
    }