2013-03-08 114 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

相關問題