Symfony2:动态验证表单

时间:2015-02-24 15:09:50

标签: forms validation symfony propel

我有一个基于各种对象的表单,它是动态构建的,字段在DB中读取。这很好。

现在我需要使用DB中解释的规则来验证表单。 vaidation示例:

if($myobject->getValue() !=== $value_from_db) then addViolation('bzzzz')

我在互联网上找到的任何解释都与静态验证有关。是否无法将验证器应用于表单或对象,以便$ form-> isValid()方法考虑它?

注意:我使用的是Propel而不是Doctrine。

1 个答案:

答案 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