Php 如何在没有验证组的情况下仅验证Symfony表单的一部分?

Php 如何在没有验证组的情况下仅验证Symfony表单的一部分?,php,forms,validation,symfony,Php,Forms,Validation,Symfony,我有一个动态生成的表单,只有一个字段。此字段因查询而异。我需要使用正确的验证器验证此字段。我认为最简单的方法是用这个字段创建表单并验证整个表单。但我错了。表单使用整个实体(而不仅仅是一个字段)进行验证 我需要表单,因为我的实体的每个字段都可以有自己的验证规则(可以是电子邮件验证、长度验证或范围验证等等)。表单将仅通过字段名捕获所有这些验证。它还可以将一些数据转换为适当的格式 现在我有一个问题:如何只验证表单的一个特定字段 $value = trim($request->get($f

我有一个动态生成的表单,只有一个字段。此字段因查询而异。我需要使用正确的验证器验证此字段。我认为最简单的方法是用这个字段创建表单并验证整个表单。但我错了。表单使用整个实体(而不仅仅是一个字段)进行验证

我需要表单,因为我的实体的每个字段都可以有自己的验证规则(可以是电子邮件验证、长度验证或范围验证等等)。表单将仅通过字段名捕获所有这些验证。它还可以将一些数据转换为适当的格式

现在我有一个问题:如何只验证表单的一个特定字段

    $value = trim($request->get($field, '');
    $form = $this->createFormBuilder($order, array('csrf_protection' => false))
        ->add($field)
        ->getForm();
    $form->submit(array($field => $value));
    if ($form->isValid()) {
        $em->persist($order);
        $em->flush();
    }
我刚想出来:

要仅验证一个字段,我不能使用
$form->isValid()
,而是使用
$form->get($field)->isValid()

您可以使用以下代码:

$validator = $this->get('validator');
if ($validator->validateProperty($containingValue, $property)) {
    $em->persist($order);
    $em->flush();
}
$validator = $this->get('validator');
if ($validator->validateProperty($containingValue, $property)) {
    $em->persist($order);
    $em->flush();
}