我有一个不代表任何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-的用户注册
该类的目录为src/Acme/AccountBundle/Form/Model/Registration.php,可以根据需要进行完美验证。
在我看来,这是不可能的。放在注释或yml文件中的验证器应该与实体对象连接,而不是与表单类型连接。
但也有一些小的变通办法。
您可以创建自己的FormBuilder服务。他的方法应该将FormType作为参数,然后他将重写FormType,以获得由方法"createFormBuilder"创建的表单:Symfony表单文档。然后,在该服务中,您可以通过以下方式读取验证文件并添加验证器:Symfony文档-添加验证
这真的很耗时,我认为最好将验证器连接到实体上。
只需创建一个普通的php对象作为模型类,并将其用作createForm()中的数据对象。然后您可以在这个简单的模型对象上创建validation.yml。