0

埋め込みフォームのコレクションを使用するフォームがあります。

私のメインフォームでは、フィールド「コメント」に検証があります。この検証は、シンプルで、うまく機能します。私の埋め込みフォームのコレクションは、別のエンティティを扱います。このエンティティ フィールドを検証したい

|  comment (min length = 5 ok) ------
                                    |   anotherfield (min length = 5 not ok)    
                                    |   anotherfield (min length = 5 not ok) 

validation.yml ファイルで 2 つのフォーム検証ルールを呼び出します。

My\Bundle\Entity\Main:
    properties:
        comment:
            - Length: 
                min: 5
                minMessage: "minmessage"

My\Bundle\Entity\EmbedEntity:
    properties:
        anotherfield:
            - Length: 
                min: 5
                minMessage: "minmessage"

しかし、2 番目の検証は無視され、私のフォームはコミットされます。(エラーは返されず、通過します$form is->valid())

検証ファイルが読み取られます。(コメントに対する私の最初の検証は問題ありません)

何か不足していますか?

4

3 に答える 3

0

プロパティに 'error_bubbling'=>true を追加すると、minMessages も表示されます。例えば:

$builder->add('title', null, array('error_bubbling'=>true,"mapped" => true, "description" => "The title of the position"))

コレクションビルダーで->追加呼び出し:

   $builder->add(
            'positionOwners',
            'collection',
            array(
                'type' => new PositionOwnerType($this->positionOwnerFormSubscriber),
                'allow_add' => true,
                'allow_delete' => true,
                'mapped' => true,
                'error_bubbling'=>true,
            'cascade_validation' => true
            )
        )

また、setDefaultOptions は次のようになります。

 /**
 * Set the default options of PositionType form
 * @param OptionsResolverInterface $resolver
 */
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
    $resolver->setDefaults(
        array(
            'data_class' => 'Radsphere\RecruitmentBundle\Entity\PositionType',
            'csrf_protection' => false,
            'cascade_validation' => true,
            'error_bubbling'=>true
        )
    );
}
于 2014-01-08T12:47:08.490 に答える
0

"cascade_validation" => true親フォームで、埋め込みフォームを検証する必要があります。

Validまた、検証ファイルの埋め込みフィールドにa を追加して、機能させることができると思います。

于 2013-09-23T11:22:27.883 に答える
0

Valid 制約を使用して、親オブジェクトにプロパティとして埋め込まれたオブジェクトを検証します

たとえば、注釈を使用する場合

/**
*
* @Assert\Valid
*/
private $items;
于 2013-11-15T15:27:35.583 に答える