En el corto post de hoy veremos cómo validar que las contraseñas que el usuario escribe sean iguales al momento de registrar un usuario, es decir, que la contraseña y la confirmación de la contraseña coincidan.

Así vas a poder mostrar el mensaje de “Las contraseñas deben coincidir” o “Vuelve a escribir tu contraseña”

Esto se puede hacer con un if o cosas complejas, pero te enseñaré a comprobar si las 2 contraseñas son iguales dentro del Request que llega al formulario, dentro de StoreUserRequest específicamente.

Por cierto, estoy suponiendo que usas la autenticación de Laravel para crear usuarios o que al menos usas un Request para enviar el formulario.

Validando confirmación de contraseña

Lo único que tenemos que hacer es modificar el StoreUserRequest o el request que uses para registrar al usuario. En mi caso mis reglas se ven así:

<?php
/**
     * Get the validation rules that apply to the request.
     *
     * @return array<string, mixed>
     */
    public function rules()
    {
        return [
            "name" => "required",
            "email" => "email:rfc",
            "password" => "required",
            "passwordConfirm" => "required|same:password",
            "rol" => "required",
        ];
    }

Presta atención a la línea 12, ahí estoy indicando que el campo password es requerido, pero además en la línea 13 indico que el campo passwordConfirm es requerido y debe ser igual al campo password con same:password.

Formulario para crear usuario

En este caso es necesario que el campo se llame igual que el de la validación. Por lo tanto mis campos son password y passwordConfirm:

<div class="field">
    <label class="label">Contraseña</label>
    <div class="control">
        <input required class="input" type="password" placeholder="Escribe la contraseña" name="password">
    </div>
</div>
<div class="field">
    <label class="label">Confirmar contraseña</label>
    <div class="control">
        <input required class="input" type="password" placeholder="Vuelve a escribir la contraseña"
            name="passwordConfirm">
    </div>
</div>

Abajo del formulario estoy mostrando los errores en caso de que existan:

@if(session("mensaje"))
<div class="mt-2 notification is-{{session('tipo') ? session("tipo") : "info"}}">
    {{session('mensaje')}}
</div>
@endif
@if (!empty($errors->all()))
<div class="notification is-danger mt-2">
    <h4 class="is-size-4">Por favor, corrige lo siguiente:</h4>
    <ul>
        @foreach ($errors->all() as $mensaje)
        <li>
            {{ $mensaje }}
        </li>
        @endforeach
    </ul>
</div>
@endif

Y en caso de que el usuario no escriba las mismas contraseñas y envíe el formulario, aparecerá lo siguiente:

Validar confirmación de contraseña con Laravel - Confirmar contraseña

La ventaja de usar Requests es que si la misma es inválida nunca llegará a nuestro controlador en donde guardamos el usuario.

Por aquí te dejo más tutoriales de Laravel.

Si el post ha sido de tu agrado te invito a que me sigas para saber cuando haya escrito un nuevo post, haya actualizado algún sistema o publicado un nuevo software. Facebook | X | Instagram | Telegram | También estoy a tus órdenes para cualquier contratación en mi página de contacto