Symfony2约束发布数据依赖性

时间:2014-01-20 16:00:58

标签: forms symfony

是否可以将帖子数据设置为类约束选项,例如:

MyEntity
    properties:
        field:
            - MyConstraint: { someOption: someValue }

我想用提交的值填充MyConstraint::someOption

我知道类约束/目标,但是我将失去与约束的可重用性(因为它绑定到类)。

或者我应该创建第二个约束,例如委托给普通约束的类约束。

还是可以通过活动? (例如,改变PRE_SET_DATA上的YAML定义约束)

罗兰。

1 个答案:

答案 0 :(得分:0)

通过表单事件找到一种方法:)

为了将来参考,我的方法如下:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    // fields etc.

    $validator = $this->validator; // injected via DIC (service @validator)
    $builder->addEventListener(FormEvents::SUBMIT, function(FormEvent $event) use ($validator) {
        $entity = $event->getForm()->getData(); // populated with post data due SUBMIT event
        $metadata = $validator->getMetadataFactory()->getMetadataFor($entity); // constraint metadata (validation.yml)
        $metadata->addPropertyConstraint('property_field', new SomeConstraint(array(
            'someOption' => $entity->getSomeValue() // postdata... we have it :)
        )));
    });
}