我有Entity我使用验证annotations进行装饰,如下所示:
use Symfony\Component\Validator\Constraints as Assert;
class Entity
{
/**
* @Assert\MaxLength(100)
*/
protected $property;
...
}
在$property
的setter中,我想知道在提交表单时验证是否成功。如果验证成功(或不成功),我将在PHP中执行其他操作,这些操作不能通过注释获得。
这可能吗?即:
...
function setProperty($value)
{
if(annotation_validation_passed_when_form_submitted)
{
$value = do_something($value);
}
$this->property = $value;
}
...
答案 0 :(得分:1)
您可以向EventListener
添加FormBuilder
以收听FormEvents::BIND
事件。您可以在自己的类中执行此操作,也可以仅在表单构建器本身中执行此操作。我将展示后者的一个例子,因为它更快。
$builder->addEventListener(FormEvents::BIND, function($event) {
$data = $event->getData();
$comment = $data->getComment();
$comment = $comment . $comment;
$data->setComment($comment);
});
当然用你自己的逻辑替换逻辑。