es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El mensaje de error no se muestra cuando la contraseña no coincide con su confirmación.

Estoy tratando de mostrar un mensaje de error cuando la contraseña no coincide con su confirmación.

Aquí está el código relevante en el archivo de clase del formulario:

    ->add('password', RepeatedType::class, array(
            'required' => true,
            'invalid_message' => 'La contraseña y su confirmación no son iguales',
            'type' => PasswordType::class,
            'first_options' => array('label' => false),
            'second_options' => array('label' => false),
        ))

Y aquí está el código relevante en Twig:

    <div class="control-group">
        <div class="input-prepend">
            {{ form_row(registrationForm.password.first ,{'label':false,'attr':{'placeholder':'Contraseña','name':'password1','class':'form-control','id':'password1','required data-error':'Por favor, ingrese su contraseña'}} ) }}
        </div>
    </div>
    <div class="control-group">
        <div class="input-prepend">
            {{ form_row(registrationForm.password.second ,{'label':false,'attr':{'placeholder':'Confirmación de contraseña','name':'password2','class':'form-control','id':'password2','required data-error':'Por favor, confirme su contraseña'}} ) }}
        </div>
    </div>

El problema es que cuando se ingresan contraseñas diferentes y se valida el formulario, el mensaje de error esperado no se muestra. ¿Tienes alguna idea de cómo solucionarlo?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El problema podría estar relacionado con la falta de restricciones de validación en el archivo de la clase de formulario de Symfony. Puede utilizar el componente de validación integrado de Symfony para agregar restricciones para la confirmación de la contraseña. Aquí tienes un ejemplo:

    use Symfony\Component\Validator\Constraints\NotBlank;
    use Symfony\Component\Validator\Constraints\Length;
    use Symfony\Component\Validator\Constraints\EqualTo;
    
    ...
    
    ->add('password', RepeatedType::class, [
        'required' => true,
        'invalid_message' => 'Le mot de passe et sa confirmation ne sont pas identiques',
        'type' => PasswordType::class,
        'first_options' => [
            'label' => false,
            'attr' => [
                'placeholder' => 'Mot de passe',
                'name' => 'password1',
                'class' => 'form-control',
                'id' => 'password1',
                'required data-error' => 'Veuillez saisir votre mot de passe',
            ],
            'constraints' => [
                new NotBlank(),
                new Length(['min' => 8]),
            ],
        ],
        'second_options' => [
            'label' => false,
            'attr' => [
                'placeholder' => 'Confirmation mot de passe',
                'name' => 'password2',
                'class' => 'form-control',
                'id' => 'password2',
                'required data-error' => 'Veuillez confirmer votre mot de passe',
            ],
            'constraints' => [
                new NotBlank(),
                new Length(['min' => 8]),
                new EqualTo([
                    'propertyPath' => 'password.first',
                    'message' => 'Les mots de passe saisis ne correspondent pas',
                ]),
            ],
        ],
    ])
    

    En este ejemplo, agregamos tres restricciones de validación para el campo de confirmación de contraseña: NotBlank para asegurarnos de que el campo no esté vacío, Length para asegurarnos de que la contraseña tenga al menos 8 caracteres y EqualTo para asegurarnos de que la contraseña y el campo de confirmación coincidan. La opción propertyPath de la restricción EqualTo apunta al campo password.first para que pueda comparar su valor con el valor del campo de confirmación.

    Con estas restricciones agregadas, Symfony automáticamente validará el formulario y mostrará el mensaje de error cuando los campos de contraseña y confirmación no coincidan.

Comments are closed.