0

次のような検証注釈を使用して装飾したエンティティがあります。

use Symfony\Component\Validator\Constraints as Assert;

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

セッター内で$property、フォームが送信されたときにアノテーションの検証が成功したかどうかを知りたいです。検証が成功した (または成功しなかった) 場合、注釈では利用できない PHP の他の操作を実行します。

これは可能ですか?すなわち:

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

1 に答える 1

1

をに追加して、イベントをリッスンできEventListenerます。これは、独自のクラスで実行することも、フォームビルダー自体で実行することもできます。後者の方が速いので例を示します。FormBuilderFormEvents::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 に答える