簡體   English   中英

Symfony 2.6-如何使用validation.yml驗證非實體表單?

[英]Symfony 2.6 - How to validate non-entity form using validation.yml?

我有一個不代表任何Entity對象的表單,但是,我想驗證此表單,但是由於某些原因(例如干凈的代碼等),必須使用validation.yml文件來完成。

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

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

但是我的表格未經驗證。 $form->isValid()始終返回true

我認為鏈接包含您想要的完美示例。 http://symfony.com/doc/current/cookbook/doctrine/registration_form.html

您會看到有一個名為Registration的模型,它不是實體。 這是http://symfony.com/doc/current/cookbook/doctrine/registration_form.html#embedding-the-user-form-into-a-registration-form

此類的目錄為src / Acme / AccountBundle / Form / Model / Registration.php,可以根據需要進行完美驗證。

我認為這是不可能的。 放置在注釋或yml文件中的驗證器應與實體對象(而不是表單類型)連接。

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

您可以創建自己的FormBuilder服務。 他的方法應該將您的FormType作為參數,然后他將重寫您的FormType以獲取由方法'createFormBuilder'創建的表單Symfony表單文檔 然后,在此服務中,您可以通過以下方式讀取驗證文件並添加驗證器: Symfony文檔-添加驗證

這確實很耗時,我認為將驗證器附加到您的實體會更好。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM