Herramientas de usuario

Herramientas del sitio


cursos:yii:clases:activerecord:reglas

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 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
  }
}