0

我有一个使用验证注释装饰的实体,如下所示:

use Symfony\Component\Validator\Constraints as Assert;

class Entity
{
    /**
     * @Assert\MaxLength(100)
     */
    protected $property;
    ...
}

在设置器中,$property我想知道提交表单时注释的验证是否成功。如果验证成功(或不成功),我将在 PHP 中执行无法通过注释获得的其他操作。

这可能吗?IE:

...
function setProperty($value)
{
    if(annotation_validation_passed_when_form_submitted)
    {
        $value = do_something($value);
    }
    $this->property = $value;
}
...
4

1 回答 1

1

您可以添加一个EventListenerFormBuilder监听FormEvents::BIND事件。您可以在其自己的类中执行此操作,也可以仅在表单构建器本身中执行此操作。我将展示后者的示例,因为它更快。

$builder->addEventListener(FormEvents::BIND, function($event) {
        $data = $event->getData();

        $comment = $data->getComment();
        $comment = $comment . $comment;
        $data->setComment($comment);
});

当然用你自己的逻辑替换。

于 2012-12-07T17:39:30.147 回答