Hace mucho tiempo atrás agregé la función para validar en forma sencilla en el model de YII Framework.

Aca les dejo el simple código.

No olviden que para utilizar hay que agregar en las rules del model.

public function rules(){ 
   array('attribute','rut'); 
}

Y despues agregar la siguiente función.

public function rut($attribute,$params){
  $rut = $this->rut;
  $suma = "";
  if(strpos($rut,"-")===false){
    $this->addError($attribute, 'El RUT ingresado no es válido');
    return false;
  }else{
    $RUT = explode("-", trim($rut));
    if(strlen($RUT[0]) > 6 && strlen($RUT[0]) < 9) { $this->addError($attribute, 'El RUT ingresado no es válido '.$RUT[0].' - '.strlen($RUT[0])); return false; }
    if(is_int(trim($RUT[0]))===false) { $this->addError($attribute, 'El RUT ingresado no es válido '.$RUT[0]);   
return false; }
    $elRut = str_replace(".", "", trim($RUT[0]));
    $factor = 2;
    for($i = strlen($elRut)-1; $i >= 0; $i--):
      $factor = $factor > 7 ? 2 : $factor;
      $suma += $elRut{$i}*$factor++;
    endfor;
    $resto = $suma % 11;
    $dv = 11 - $resto;
    if($dv == 11){
      $dv=0;
    }else if($dv == 10){
      $dv="k";
    }else{
      $dv=$dv;
    }
    if($dv == trim(strtolower($RUT[1]))){
      return true;
    }else{
      $this->addError($attribute, 'El RUT ingresado no es valido');
      return false;
    }
  }
}

Saludos!

Share This