No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Validación de modelo con core validators

26/35
Recursos

¿Cómo gestionar las validaciones en un modelo usando Yii?

El manejo de validaciones en aplicaciones web es crucial para asegurar la integridad de los datos que maneja el sistema. En Yii, este proceso se optimiza a través de las funciones disponibles en los modelos, permitiendo ahorrar tiempo y evitar errores comunes. Aquí exploraremos cómo implementar estas validaciones.

¿Cómo se estructuran las validaciones en Yii?

Yii ofrece funciones como attributeLabels(), attributeHints() y rules() para gestionar las validaciones de los datos:

  • attributeLabels(): Retorna un arreglo con etiquetas personalizadas para cada atributo, permitiendo modificar cómo se despliega la información dentro de una vista.

    public function attributeLabels() {
        return [
            'username' => 'Usuario',
        ];
    }
    
  • attributeHints(): Proporciona consejos o indicaciones adicionales para cada campo, lo que le permite a los usuarios llenar los formularios de manera más informada.

    public function attributeHints() {
        return [
            'username' => 'Deberá ser único en el sistema',
        ];
    }
    

¿Cómo implementar reglas de validación en Yii?

Las reglas de validación se definen en la función rules(), retornando un arreglo de arreglos que especifica las condiciones que cada atributo debe cumplir.

  • Requerido (required): Se asegura que el campo no esté vacío.

    public function rules() {
        return [
            [['username', 'password'], 'required'],
        ];
    }
    
  • Por defecto (default): Permite aceptar cualquier valor de entrada sin validaciones estrictas.

    ['bio', 'default'],
    
  • String y longitud (string): Restrictivo para limitar el largo de texto que el campo puede contener.

    ['username', 'string', 'length' => [3, 100]],
    

¿Cómo usar validadores predeterminados de Yii?

Yii facilita una serie de validadores predeterminados que cubren diferentes necesidades, desde validación de tipo de dato hasta comparaciones entre campos:

  • Valida tipo entero (integer): Sólo permite números enteros.

  • Comparar (compare): Compara un campo con otro dentro del mismo modelo, esencial para confirmaciones como las de la contraseña.

    ['password', 'compare', 'compareAttribute' => 'password_repeat'],
    

Estos validadores pueden combinarse y personalizarse para cumplir con políticas más detalladas de validación, como garantizar que un campo sea único o restringir la entrada a valores predeterminados.

¿Qué hacer en caso de error en datos de usuario?

Cuando los datos de un usuario no pasan las validaciones, es fundamental manejar los errores de manera clara para evitar confusiones y mejorar la experiencia de usuario.

if (!$model->validate()) {
    // Restablecer campos sensibles como contraseñas
    $model->password = '';
}

Implementar estrategias para manejar errores no solo refuerza la seguridad, sino que también impulsa una mejor interacción con el usuario.

Herramientas adicionales y referencias

Para quienes deseen expandir sus conocimientos sobre validadores en Yii, es recomendable revisar la lista de Core Validators de Yii, donde se detallan opciones adicionales y ejemplos prácticos.

Con prácticas robustas de validación, el desarrollo web no solo alcanza mayores niveles de seguridad, sino que también ofrece una experiencia de usuario más amigable y eficaz.

Aportes 3

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Me llamo mucho la atencion la forma de validacion despues de perder el foco (Ahi hay un javascript haciendo la magia). Y lo segundo como desde el contralador se envio esta linea y eso se refleja en el formulario, interesante. ```js $user->password = ''; ```![](https://static.platzi.com/media/user_upload/aplicando%20estilos-6964fc6d-37aa-4079-9c34-34283dfa38c6.jpg)
![](https://static.platzi.com/media/user_upload/aplicando%20estilos-d5b0b2e2-d528-4c7c-a77c-4776c42b8ca8.jpg)
También es posible personalizar los mensajes de error Ejemplo: ```js public function rules() { return [ // Validador de email con mensaje en español ['email', 'email', 'message' => 'El formato del correo electrónico no es válido.'], // Validador de longitud con mensaje personalizado ['username', 'string', 'min' => 3, 'max' => 12, 'tooShort' => 'El nombre de usuario debe tener al menos 3 caracteres.', 'tooLong' => 'El nombre de usuario no puede tener más de 12 caracteres.'], // Validador de número con mensaje personalizado ['age', 'integer', 'message' => 'La edad debe ser un número entero.'], // Validación de valor requerido [['username', 'email'], 'required', 'message' => 'Este campo es obligatorio.'], ]; } ```public function rules() { return \[ // Validador de email con mensaje en español \['email', 'email', 'message' => 'El formato del correo electrónico no es válido.'], // Validador de longitud con mensaje personalizado \['username', 'string', 'min' => 3, 'max' => 12, 'tooShort' => 'El nombre de usuario debe tener al menos 3 caracteres.', 'tooLong' => 'El nombre de usuario no puede tener más de 12 caracteres.'], // Validador de número con mensaje personalizado \['age', 'integer', 'message' => 'La edad debe ser un número entero.'], // Validación de valor requerido \[\['username', 'email'], 'required', 'message' => 'Este campo es obligatorio.'], ]; }