1

有効なBまたはnullである必要があるプロパティbを保持するエンティティAを持つこのプロジェクトがあります。B自体には必須のプロパティがあります。

bが有効またはnullであることをどのように主張できますか?Validアサーションを使用しようとしましたが、nullが無効であるため、mandatoryItemがnullであると文句を言います。

<?php 
// use statements

class A
{
    /**
     * @ORM\OneToOne(targetEntity="B")
     * @Assert\Valid
     */
    private b;
}

// meanwhile, in another file...
class B
{
   /**
    * @Assert\NotBlank
    */
   private $mandatoryItem;
}
4

1 に答える 1

2

以下のことを行う前に、Assert有効になっていることを確認してください。それがすでに原因である場合は、以下の手順が役立つ場合があります。

フォームを使用してデータを送信し、そのフォームのformTypeを取得したが、Valid制約が機能していない場合は、次のように実行できます。

Validアサートを削除します。

ATypeクラスブロック内に、次のbuildForm()ように追加します。

...
$builder->add('B', new BType(), array(
    'required' => false,
));
...

また、ATypeクラスに次の関数を追加します。

public function setDefaultOptions(OptionsResolverInterface $resolver)
{
    $resolver->setDefaults(array(
        'data_class' => 'Your\AppBundle\Entity\A',
        'cascade_validation' => true,
    ));
}

'cascade_validation' => true,Validフォーム内と同じですが、その後です。

于 2012-11-09T17:14:30.190 に答える