我有一个关于窗体的孩子验证的问题。 我有一个类型,它包含多种类型的另一种类型。 在这些子类型中,我有一个必填字段,一个非必填字段。 但即使两者都是空的,形式验证 这里是我的班儿童类型没有使用isValid()以symfony2的形式进行验证
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;
}
passengerListType
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';
}
}
PassengerType
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',
);
}
}
这给我这个表格:
但随着$形式 - 验证表单时> isValid()的altough我离开这两个字段为空返回的值是真实的。
我有这样的感觉,问题是在chidlren类型中没有任何验证。
你有任何能帮助我的利兹吗?
请注意,Form :: isValid方法不会处理验证,但只会返回一个布尔值,在验证处理完成时设置(对于Form的bindRequest)。 – AlterPHP 2012-08-14 14:29:48
你的乘客班是什么样的? – 2012-08-16 17:53:53