1

使用事例

私は Symfony2 を学習しており、フレームワークを学習するために卓球追跡アプリを作成しています。次のようにエンティティを構成しました。

Player 1..n Result n..1 Match

私のフォームでは、試合のスコアが正しいことを検証したいと思います。

実装

Matchの がArrayCollection()ありresultsます。

MyMatchTypeResultTypeフォームには次のものが含まれます。

 // Form\MatchType
    $builder->add('matchType', 'entity', array(
            'class' => 'PingPongMatchesBundle:MatchType',
            'property' => 'name',
        )
    )
    ->add('results', 'collection', array(
            'type' => new ResultType(),
            'allow_add' => true,
            'by_reference' => false,
        )
    )
    ->add('notes');

 // Form\ResultType
    $builder->add('player', 'entity', array(
                'class' => 'PingPongPlayerBundle:Player',
                'query_builder' => function(EntityRepository $er) {
                    return $er->createQueryBuilder('p')
                        ->orderBy('p.firstName', 'ASC');
                },
            ))
            ->add('score');

問題

スコアを検証できる必要があります。ただし、有効かどうかを知るために my の 2 つのインスタンスを比較する必要があるため、このタイプの検証にアプローチする方法がResult#scoreわかりません。

Result#score2つの異なるインスタンスを比較できるようにするために使用できる方法またはアプローチを提案できる人はいますか? たとえばArrayCollection、エンティティでを検証できますか?Match

4

2 に答える 2

0

You could creat a custom validator constraint on Match entity. http://symfony.com/doc/2.0/cookbook/validation/custom_constraint.html

于 2013-03-04T12:00:02.560 に答える
0

コールバック制約を見てください:

http://symfony.com/doc/2.1/reference/constraints/Callback.html

于 2013-03-04T12:19:40.693 に答える