Symfony Form Callback不会将对象作为第一个参数返回

时间:2014-07-24 16:50:05

标签: validation symfony callback

我正在尝试将回调约束添加到Symfony 2.4中的复选框。我们的想法是检查对象上的其他值以及是否决定天气以允许验证通过。

我已经回调了,但返回的第一个参数不是实体,而是复选框的值。 Symfony文档声明第一个参数将是对象。 http://symfony.com/doc/current/reference/constraints/Callback.html#the-callback-method。我不确定我错过了什么

表示代码:

use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Component\Validator\ExecutionContextInterface;

//...

public function buildForm(FormBuilderInterface $builder, array $options) {
    parent::buildForm($builder, $options);
    $builder->add('enabled', 'checkbox', array(
        'required' => false,
        'constraints' => array(
            new Assert\Callback(array(
                'callback' => array(
                    $this,
                    'validateisReady'),
                'groups' => $this->validationGroups))
        ),
    ))
    ;
}

public static function validateisReady($object, ExecutionContextInterface $context) {

    //..
    if($object->getItems()->count() < 1){
        $context->addViolationAt('enabled', 'items.missing');
    }
    //..
}

$ object保存复选框的布尔值。我希望它成为实体。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您需要将此约束添加到实体对象,而不是表单。