2015-04-04 99 views
1

我有一個表示不表示任何實體對象,但是,我想驗證此表單,但由於某些原因(例如清理代碼等),它必須通過使用validation.yml文件來完成。Symfony 2.6 - 如何使用validation.yml驗證非實體表單?

我將我的表單對象存儲在\\src\ZaquPL\MyCustomBundle\Form\Type\MyCustomFormType.php。此外,我創建validation.yml文件:

ZaquPL\MyCustomBundle\Form\Type\MyCustomFormType: 
    properties: 
     myField: 
      - NotBlank: ~ 

但我的形式是未經驗證。 $form->isValid()總是返回true

回答

1

在我看來這是不可能的。置於註釋或yml文件中的驗證器應與實體對象連接,而不是與表單類型相關聯。

但是有一個小的解決方法。

您可以創建自己的FormBuilder服務。他的方法應該作爲你的FormType的參數,然後他會重寫你的FormType來獲取由createFormBuilder方法創建的表單:Symfony form documentation。然後在此服務中,您可以讀取驗證文件並以這種方式添加驗證程序: Symfony documentation - adding validation

這非常耗時,我認爲最好將驗證程序附加到您的實體。

+0

對不起,但這不是必需的,並且對內部服務的一個醜陋的代碼大小 – 2015-04-05 17:16:33

1

只需創建一個普通的php對象作爲模型類,並將其用作createForm()中的數據對象。然後你可以在這個簡單的模型對象上創建validation.yml。

+1

我同意這條評論。簡單地不要創建一個實體,而只需要一個模型(它不會持久化到數據庫),並將該類添加到validation.yml中。然後你可以驗證使用驗證器服務。 – tomazahlin 2015-04-05 13:50:07