我有一個關於窗體的孩子驗證的問題。 我有一個類型,它包含多種類型的另一種類型。 在這些子類型中,我有一個必填字段,一個非必填字段。 但即使兩者都是空的,形式驗證 這裏是我的班兒童類型沒有使用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