我有一个关于表单子项验证的问题。我有一个类型,它包含另一种类型的几种类型。在这些子类型中,我需要一个字段,一个不需要的恶魔。但即使两者都是空的,表单也已验证这是我的课程
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。
我觉得问题是在儿童类型中没有任何验证。
你有任何可以帮助我的利兹吗?