Symfony:表单根目录下的错误消息,带有atPath方法

时间:2016-12-07 09:55:11

标签: php symfony symfony-forms

我有一个没有实体的表单,我喜欢用CallBack约束验证它。但是错误是在表单的根目录而不是表单元素上设置。

我的表格的一部分:

   $builder
      ->add('judgmentPeriod', DatesPeriod::class, [
             'constraints' => new Callback(array(
             'callback' => [$this, 'datesAreEmpty'],
             'groups' => ['insertionPeriod']))
      ])
      ->add('insertionPeriod', DatesPeriod::class, [
             'constraints' => new Callback(array(
             'callback' => [$this, 'datesAreEmpty'],
             'groups' => ['judgmentPeriod']))
      ])
   ;

DatesPeriod包含2个DateTime子表单。

我的回调函数:

public function datesAreEmpty($data, ExecutionContextInterface $context)
{
    if(isset($data['end']) && $data['end'] != null || isset($data['start']) && $data['start'] != null) {
        $context
            ->buildViolation('error.dates_period.not_empty')
            ->atPath('[insertionPeriod]')
            ->addViolation()
        ;
    }
}

问题是error.dates_period.not_empty消息显示在表单顶部而不是insertPeriod元素上。

我真的不知道如何使用atPath方法,但我认为我没有提供正确的参数。

感谢。

[编辑] 我找到了解决方案,我不得不将error_bubbling强制为false。

0 个答案:

没有答案