2013-03-08 49 views
0

我在_form.php模板已经验证码值总是必需的(一些无关痛痒的字段被遗漏):为什么我不能提交表单,即使没有

<?php echo $form['correo_madre'] ?> 
<?php echo $form['correo_madre']->renderError() ?> 

在我AlumnosForm.class.php已这一个:

public function configure() { 
    $this->validatorSchema['correo_padre'] = new sfValidatorEmail(array(), array('invalid' => 'La dirección de correo no es válida')); 
    $this->validatorSchema['correo_madre'] = new sfValidatorEmail(array(), array('invalid' => 'La dirección de correo no es válida')); 

    $this->validatorSchema->setPostValidator(new sfValidatorCallback(array('callback' => array($this, 'checkFields')))); 
} 

public function checkFields($validator, $values) { 
    if ((!empty($values['alumnos_nombre_padre']) &&  
     !empty($values['alumnos_apellidos_padre']) && 
     !empty($values['alumnos_rut_padre']) && 
     !empty($values['alumnos_telefono_padre']) && 
     !empty($values['alumnos_direccion_padre']) && 
     !empty($values['alumnos_correo_padre'])) || 
     (!empty($values['alumnos_nombre_madre']) && 
     !empty($values['alumnos_apellidos_madre']) && 
     !empty($values['alumnos_rut_madre']) && 
     !empty($values['alumnos_telefono_madre']) && 
     !empty($values['alumnos_direccion_madre']) && 
     !empty($values['alumnos_correo_madre']))) { 
      return $values; 
     } else { 
      throw new sfValidatorError($validator, 'Los datos de uno de los dos padres son requeridos!!!'); 
    } 
} 

我检查也BaseAlumnosForm.class.php和现场不要求验证:

'correo_madre' => new sfValidatorString(array('max_length' => 100, 'required' => false)) 

当我尝试提交表单proccess失败

要求

消息,为什么呢?

+0

你设置的每个域验证?如果不是,你应该这样做。在_form.php模板中,您是否呈现隐藏的字段? – ilSavo 2013-03-09 12:12:22

回答

2

由于您在AlumnosFormconfigure()内重新定义验证程序,所以BaseAlumnosForm中的定义被覆盖。

所以,你应该专注于验证内部AlumnosForm(你定义了两次这个类里还是只有一个错字?)

默认情况下,a validator is required

要求:true如果该值是必需的,否则false(默认为true

这就是为什么基地内的一个明确在false。在你的情况下,这个重写定义,删除这个false,因为你没有定义它。

强迫它,它应该解决您的问题:

$this->validatorSchema['correo_padre'] = new sfValidatorEmail(
    array('required' => false), 
    array('invalid' => 'La dirección de correo no es válida') 
); 
+0

你是对的我想念'必需'部分。现在我已经修复了,但即使所有必填字段都有值,我仍然收到相同的错误。我怀疑问题是postValidator,纠正我,如果我错了,但我想说'如果所有字段_padre具有值或所有字段_madre具有值'然后返回true否则抛出sfValidatorError,是我的sentece错误? – ReynierPM 2013-03-08 17:35:19

+0

错误消息是否仍然显示为“必需”?如果是这样,这个问题与你的回调验证器无关,因为你会抛出一个不需要的消息。你可以通过删除'setPostValidator'来检查。 – j0k 2013-03-09 09:38:32

+0

我得到了错误,在我的postValidator函数中的字段名称是错误的,我修好了,现在它工作 – ReynierPM 2013-03-11 14:45:52

相关问题