我有一个基于各种对象的表单,它是动态构建的,字段在DB中读取。这很好。
现在我需要使用DB中解释的规则来验证表单。 vaidation示例:
if($myobject->getValue() !=== $value_from_db) then addViolation('bzzzz')
我在互联网上找到的任何解释都与静态验证有关。是否无法将验证器应用于表单或对象,以便$ form-> isValid()方法考虑它?
注意:我使用的是Propel而不是Doctrine。
答案 0 :(得分:1)
您可以对单个表单类型设置约束。
use Cerad\Bundle\PersonBundle\ValidatorConstraint\AYSO\VolunteerIdConstraint as IdConstraint;
class VolunteerIdFormType extends AbstractType
{
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'label' => 'AYSO Volunteer ID (8-digits)',
'attr' => array('placeholder' => 'AYSO ID', 'size' => 10),
'constraints' => new IdConstraint(),
));
}
当然,您需要制定自己的自定义约束来进行数据库交互。 http://symfony.com/doc/current/cookbook/validation/custom_constraint.html#constraint-validators-with-dependencies