===== CActiverecord: Reglas de Validación ==== ==== Reglas de Validación ==== En el método rules() del modelo especificaremos todas las reglas de validación de atributos del mismo. Solamente se han de incluir las que correspondan a datos que introduce el usuario, no aquellos que asignamos por programa. También sirve para asignar valores por defecto a los atributos, en el caso de creación de un nuevo modelo: public function rules() { return array( array('fecha_hora','default','value'=>date('Y-m-d h:i')), array('aceptado','default','value'=>'1'), array('autores_id','default','value'=>Yii::app()->user->id), array('fecha_hora, categorias_id, autores_id,texto', 'required'), array('categorias_id, autores_id', 'numerical', 'integerOnly'=>true), // The following rule is used by search(). array('fecha_hora, texto, aceptado, categorias_id, autores_id', 'safe', 'on'=>'search'), ); } En [[http://yii.googlecode.com/files/yii-1.1.0-validator-cheatsheet.pdf|este documento]] hay un resumen de las reglas de validación disponibles en Yii. Podemos crear nuestros propios criterios de validación, creando un método en la clase y utilizándolo en rules, de la forma siguiente: public function rules() { return array( array('telef1', 'telefono', 'movil'=>true), ); } /** * Validación de teléfono */ public function telefono($attribute,$params) { if(strlen($this->$attribute)!=9) $this->addError($attribute, 'No es un teléfono'); // Pendiente...comprobar que son digitos... if ($params['movil']) if(substr($this->$attribute,0,1)!='6') $this->addError($attribute, 'No es un móvil'); } Mediante las reglas de validación también podemos evitar que se puedan modificar algunos atributos en la acción update: public function rules() { return array( ... array('nombre', 'unsafe','on'=>'update'), // El nombre no se puede modificar } }