2015-02-24 1 views
1

У меня есть форма, основанная на различных объектах, которая построена динамически, с полями, считываемыми в БД. Это прекрасно работает.Symfony2: динамическая проверка формы

Теперь мне нужно проверить форму, с правилами, которые объясняются в БД. Пример vaidation:

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

Любое объяснение, которое я нашел в Интернете относится к статической проверки. Невозможно применить валидатор к форме или объекту, так что метод $ form-> isValid() считает это?

Примечание: Я использую Propel, а не Doctrine.

ответ

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