是否可以将帖子数据设置为类约束选项,例如:
MyEntity
properties:
field:
- MyConstraint: { someOption: someValue }
我想用提交的值填充MyConstraint::someOption
。
我知道类约束/目标,但是我将失去与约束的可重用性(因为它绑定到类)。
或者我应该创建第二个约束,例如委托给普通约束的类约束。
还是可以通过活动? (例如,改变PRE_SET_DATA上的YAML定义约束)
罗兰。
答案 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 :)
)));
});
}