[RESUELTO] Como crear un validator

Hola Comunidad

hice una funcion que me valida una fecha ingresada




    public function rules()

    {

        return array(

            array('tipo_novedad','length','max'=>45),

            array('expediente','length','max'=>45),

            array('ciudad_institucion','length','max'=>100),

            array('obs','length','max'=>500),

            array('tipo_novedad, fecha', 'required'),

                        array('fecha_fin,fecha_ini,fecha','fechaValida'),

        );

    }







public function fechaValida($attribute,$params) {

       if (!empty($this->$attribute) and $this->$attribute!==null) {

       //echo $attribute.Varios::is_date($this->$attribute);

       if (!Varios::is_date($this->$attribute))

           $this->addError($attribute,$this->getAttributeLabel($attribute).' es una fecha incorrecta');


       else

           $this->$attribute=Varios::agregarBarras($this->$attribute);

       }

  }



pero tengo que ponerla en cada modelo

lo que quisiera hacer es usar un alias (como "required" de "CRequiredValidator" o "compare" de CCompareValidator)

lo que hice fue la clase, pero no se como definir el alias




<?php

class CFechaValidaValidator {


    protected function validateAttribute($object,$attribute)

    {


       if(!$this->isEmpty($object->$attribute,true))


       //echo $attribute.Varios::is_date($this->$attribute);

       if (!Varios::is_date($object->$attribute)) {

           //$this->addError($attribute,$this->getAttributeLabel($attribute).' es una fecha incorrecta');

           $message=$this->message!==null?$this->message:Yii::t('yii','{attribute} es una fecha incorrecta');

           $this->addError($object,$attribute,$message);

       }

       else

           $object->$attribute=Varios::agregarBarras($object->$attribute);

    }


}

?>



Tenes que extender la clase de CValidator

Podes ver más acá: http://www.yiiframework.com/doc/api/CValidator

ok

en rules()




array('fecha_fin,fecha_ini,fecha','CFechaValidaValidator'),



la clase




<?php

class CFechaValidaValidator extends CValidator {




    protected function validateAttribute($object,$attribute)

    {


       if(!$this->isEmpty($object->$attribute,true))


       //echo $attribute.Varios::is_date($this->$attribute);

       if (!Varios::is_date($object->$attribute)) {

           //$this->addError($attribute,$this->getAttributeLabel($attribute).' es una fecha incorrecta');

           $message=$this->message!==null?$this->message:Yii::t('yii','{attribute} es una fecha incorrecta');

           $this->addError($object,$attribute,$message);

       }

       else

           $object->$attribute=Varios::agregarBarras($object->$attribute);

       


    }




}

?>



me faltaria el detalle del alias

pero no es tan importante

ejemplo

el alias para "CFechaValidaValidator" que sea fechaValida

saludos y gracias!!!