フォームの子の検証に関して問題があります。別のタイプのいくつかのタイプを含むタイプがあります。これらのサブタイプでは、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 です。
問題は、子供のタイプで何も検証されていないことだと感じています。
それを手伝ってくれるリードはありますか?