Symfony形式约束CallBack 2参数

时间:2017-04-28 10:49:20

标签: php symfony constraints

我试图在我的Symfony中添加一个带有2个参数的约束,但我没有成功。 我的代码:

表单字段我试图检查是否定义:

  ->add(
                self::CUSTOMER_FAMILY_CUSTOMFIELD_FIELD_NAME,
                'text',
                array(
                  'constraints' => array(
                      new Constraints\Callback(
                          array(
                              'methods' => array(
                                  array(
                                      $this, 'checkField'
                                  )
                              )
                          )
                      )
                  ),
                    'required' => true,
                    'empty_data' => false,
                    'label' => self::trans('Some number'),
                    'label_attr' => array(
                        'for' => 'customfield'
                    ),
                    'mapped' => false,
                )
            )

不要关心大写字母中的变量,它的Thelia CMS变量是明确定义的。

然后我的函数checkField如果定义如下:

public function checkField($field, ExecutionContextInterface $context)
    {
  if(strlen($field)!=0)$context->addViolation(self::trans('FIELD ERROR')}

这很好用。 然后我想在我的约束中添加第二个参数,这是一个Thelia CMS对象($ event)。但我不知道如何使用这种代码结构来做到这一点。

欢迎任何帮助。

1 个答案:

答案 0 :(得分:0)

当我看到你的问题时,我可以看到这些可能的情况:

  1. 您的$ event对象不依赖于CUSTOMER_FAMILY_CUSTOMFIELD_FIELD_NAME字段值:
  2. 在这种情况下,您可以将$ event对象设置为包含checkField函数的类的属性,并在函数中使用其值。

    1. $ event对象取决于字段的值:
    2. 在这种情况下,您可以像以前一样做,然后在表单事件回调中设置$ event属性,您还可以在其中重新定义字段,以便在期望的形式事件。