2015-04-04 102 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