我有一个动态生成的表单,只有一个字段。此字段因查询而异。我需要使用正确的验证器验证此字段。我认为简单的方法是使用这一个字段创建表单并验证整个表单。但是我错了。表单与整个实体(不仅仅是一个字段)进行验证。
我需要表单,因为我的实体的每个字段都有自己的验证规则(可以是电子邮件验证,长度验证或范围验证等)。表单将仅通过字段名称捕获所有这些验证。它还可以将一些数据转换为适当的格式。
现在我有一个问题:如何只验证表单中的一个特定字段?
$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();
}
答案 0 :(得分:2)
刚想通了:
要仅验证一个字段,我可以使用$form->isValid()
而不是$form->get($field)->isValid()
:
$value = trim($request->get($field, '');
$form = $this->createFormBuilder($order, array('csrf_protection' => false))
->add($field)
->getForm();
$form->submit(array($field => $value));
if ($form->get($field)->isValid()) {
$em->persist($order);
$em->flush();
}
答案 1 :(得分:0)
您可以使用此代码:
$validator = $this->get('validator');
if ($validator->validateProperty($containingValue, $property)) {
$em->persist($order);
$em->flush();
}