Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
未使用symfony2表单中的isValid()验证子类型_Symfony_Symfony Forms - Fatal编程技术网

未使用symfony2表单中的isValid()验证子类型

未使用symfony2表单中的isValid()验证子类型,symfony,symfony-forms,Symfony,Symfony Forms,我有一个关于表单子项验证的问题。 我有一个类型,它包含其他类型的几个类型。 在这些子类型中,我有一个必填字段,一个非必填字段。 但即使两者都是空的,表单也会被验证 这是我的课 class PassengerList { /** * @Assert\Valid() //If it's an array of objet, should validate all the object of the list *traverse */ protected $passengers; /**

我有一个关于表单子项验证的问题。 我有一个类型,它包含其他类型的几个类型。 在这些子类型中,我有一个必填字段,一个非必填字段。 但即使两者都是空的,表单也会被验证 这是我的课

  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',
    );
}
}
乘客类型

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,尽管我将两个字段都保留为空

我觉得问题在于chidlren类型中没有任何东西得到验证

你有任何利兹能帮我的吗?

你用的是2.1吗


您需要指定或启用类似于。请注意,Form::isValid方法不处理验证,而只返回一个布尔值集,而验证已被处理(使用bindRequest for a Form)。您的乘客类是什么样子的?仍然没有升级到2.1,实际上在2.0.16上工作。我将尝试使用验证组,因为在2.0.16版本中,cascade_验证似乎无效。ThanksI试图更新Symfony以启用级联验证。它确实适用于添加的新功能。但我的表格仍然被认为是有效的。验证组在这里究竟能帮我什么忙?如果孩子们没有被验证,如果我按组分开,他们也不会被验证,我错了吗?我不建议在这里使用级联验证,因为有效的约束应该有效。您的代码似乎有问题(例如乘客舱)。