Herramientas de usuario

Herramientas del sitio


cursos:yii2:clases:activerecord:reglas

Activerecord: 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 las de aquellos que asignamos por programa (como por ejemplo, fecha_alta). 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 [
            [['usuarios_id'], 'required'], 
            [['usuarios_id'], 'integer'],
            [['fecha_alta'], 'default', date('Y-m-d')],
            [['estado'], 'string', 'max' => 1],
            [['usuarios_id'], 'exist', 'skipOnError' => true, 'targetClass' => \app\models\Usuarios::className(), 'targetAttribute' => ['usuarios_id' => 'id']],
        ];
    }

En este documento se explica con detalle el sistema de validación

Podemos crear nuestros propios criterios de validación, mediante funciones anónimas inline, o creando un método en la clase y utilizándolo en rules, de la forma siguiente:

public function rules()
{
    return [
    ...
       ['telef1', 'telefono', 'movil'=>true],
    ];
}
/**
* Validación de teléfono. Si param['movil'] es true , comprueba que empieza por 6
*/
public function telefono($attribute,$params,$validator)
{
    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');
}

El validador “default” sirve para asignar un valor por defecto a un atributo cuando es nulo. Típicamente, se utiliza en valores como: usuario que carga el registro, fecha de alta, estado inicial…. Se pueden definir validaciones condicionales, que se ejecutan solamente en algunos casos. (Ver opción 'when' en la documentación de yii)