4

フォームの子の検証に関して問題があります。別のタイプのいくつかのタイプを含むタイプがあります。これらのサブタイプでは、1 つのフィールドが必須で、1 つのフィーンドが必須ではありません。しかし、両方が空であっても、フォームは検証されます ここに私のクラスがあります

  class PassengerList {

/**
 * @Assert\Valid() //If it's an array of objet, should validate all the object of the list *traverse
 */
protected $passengers;
/**
 * @Assert\Valid
 */
protected $passengers_child;
/**
 * @Assert\Valid
 */
protected $passengers_baby;
}

乗客リストの種類

class PassengerListType extends AbstractType
 {
public function buildForm(FormBuilder $builder, array $options)
{
    $builder->add('passengers','collection', array(
            'type' => new PassengerType(),
            'allow_add' => false,
            'required'=> true,
            'allow_delete' => false));
    $builder->add('passengers_child','collection', array(
            'type' => new PassengerChildType(),
            'allow_add' => true,
            'allow_delete' => false));
    $builder->add('passengers_baby','collection', array(
            'type' => new PassengerBabyType(),
            'allow_add' => true,
            'allow_delete' => false));

}
function getName()
{
    return 'passenger_list';
}

}

乗客の種類

class PassengerType extends AbstractType
{

public function buildForm(FormBuilder $builder, array $options)
{
    $date_params = array("widget"=>"single_text","input"=>"datetime",'format' => 'dd-MM-yyyy',);
    $builder
    ->add('civility', 'choice', array("choices"=>Passenger::getCivilityList()))
    ->add('birthdate','date',$date_params)
    ->add('last_name','text',array('required'=>true))
    ->add('first_name','text',array('required'=>false))
    ->add('type','hidden');
}
function getName()
{
    return 'passenger';
}
public function getDefaultOptions(array $options)
{
    return array(
            'data_class' => 'Travelyo\CoreBundle\Entity\Passenger',
    );
}
}

私にこのフォームを与える:

ここに画像の説明を入力

しかし、 $form->isValid() でフォームを検証すると、両方のフィールドを空のままにしても、返される値は true です。

問題は、子供のタイプで何も検証されていないことだと感じています。

それを手伝ってくれるリードはありますか?

4

1 に答える 1

4

2.1を使用していますか?

この質問のように、検証グループを指定するか、有効にする必要があります。cascade_validation

于 2012-08-14T13:59:09.957 に答える