2014-04-06 84 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!'); 
    }