2013-04-26 35 views
1

原則實體具有在其成員字段上指定的驗證元數據,而與表單無關。 Symfony2的表單系統以某種方式使用實體提供的驗證器。Symfony2 - 我應該如何在我的非學說對象上實現驗證?

這是如何工作的?什麼把它們聯繫在一起?

我有一個非教條的模型,我想驗證沒有形式,但是當我使用的形式,它們應該是驗證信息,並正確顯示。所以,我需要:

  • 一個非教條對象上定義的驗證
  • 定義驗證沒有標註
  • 允許模型來驗證自身沒有形式
  • 允許形式在非學說對象上使用驗證器
+0

開始按照以下方式工作:http://symfony.com/doc/current/book/validation.html。關於主義實體對象並沒有什麼特別之處。他們只是普通的舊php對象,所以一切都應該在你的對象上工作得很好。驗證器服務將允許驗證表單之外的對象。您也可以深入驗證組件文檔。 – Cerad 2013-04-26 14:03:05

+0

並回答你的第一個問題:S2使用Resources/config/validation.yml文件默認情況下將事情聯繫在一起。 – Cerad 2013-04-26 14:05:22

回答

1

不知道,如果它處理你的情況(如提供非主義實體沒有代碼),但是你可以用價值觀對價值觀的symfony驗證約束和數組:

Validation

作爲一個例子驗證數組中的幾個日期值:

private function isInvalid($data) 
{ 
    $response = array(); 
    $constraint = new Collection(array(
       'from'=>new Date(), 
       'to'=>new Date(), 
      )); 

    $validationList = $this->get('validator')->validateValue($data, $constraint); 

    if(count($validationList)>0) { 
     foreach($validationList as $err) { 
      array_push($data,array(
       'field'=>$err->getPropertyPath(), 
       'message'=>$err->getMessage(), 
      )); 
     } 
     return $response; 
    } 
    return false; 
} 
相關問題