Mostrar vacio el campo password en formulario symfony2

TeNSHi

Estoy empezando con symfony2, el tema es que en el proyecto que estoy haciendo estaba trabajando en el formulario para editar la información del usuario, todo funciona bien solo que hay una cosa que no me acaba de convencer y después de mucho buscar no encuentro como solucionar.

Cuando le doy a editar y muestro el formulario me aparecen los dos campos de correo con el correo del usuario (campo repeated) hasta ahí todo bien, pero en la contraseña (también repeated) me aparece la contraseña codificada en el primer campo (first) y el segundo campo (second) vacío, me gustaría saber como hacer para que en el primer campo de la password no me aparezca la contraseña ya puesta.

El motivo? pues que si el usuario solo quiere tocar el campo localidad por ejemplo le estoy obligando a que borre ese campo ya rellenado o vuelva a meter la contraseña (en otro caso mostraría el error de que la password debe ser igual) lo cual es un engorro.

Por si sirve de ayuda, así defino el campo password en el builder

            ->add(  'password', 'repeated', array(
                    'type'=>'password',
                    'invalid_message' => 'Las dos contraseñas deben coincidir',
                    'first_options'  => array('label' => 'Contraseña'),
                    'second_options' => array('label' => 'Confirma Contraseña'),
            ))

Esta es la función action que uso para editar formularios

public function editProfileAction()
    {

    $user = $this->get('security.context')->getToken()->getUser();

    $form = $this->createForm(new UserEditType(), $user);

    $originalPassword = $form->getData()->getPassword();

    $request = $this->getRequest();
    $form->handleRequest($request);

    if($form->isValid()){

        if($user->getPassword() == null){
            $user->setPassword($originalPassword);
        }
...............

EDIT: Estoy usando symfony 2.3

codek0rZ

No se seguro sí será así pero yo probaría a en el controller antes de mostrar el formulario llamar al setter del password y ponerlo vacío. Yo también soy novatillo con symfony.

Saludos

Edit. Si no en el builder prueba con 'empty_value' => ''

1 respuesta
TeNSHi

#2 Gracias por la contestación, ya di con el problema y como siempre los errores mas tontos son los que mas lleva solucionar. Antes de nada había comprobado que no tuviese el usuario de prueba guardado con su contraseña en firefox porque a veces auto completa campos.

Hoy todo convencido voy a probar a modificar el campo rellenado con twig dándole como valor una cadena vacía así :

{{ form_widget(form.password.first, { 'attr': {'class': 'form-control', 'placeholder': 'Introduce tu contraseña', 'value': ''} }) }}

Y no funcionaba entonces ya mosqueado vuelvo a mirar los usuarios en el navegador y tenia uno pero con el mail, lo borro y ... arreglado :palm: :¬¬:

De lo que comentas lo primero debería funcionar.

Lo segundo creo que te refieres a empty_data pero eso según lo que pone en la documentación de symfony solo es para campos enviados vacíos:

http://symfony.com/doc/current/reference/forms/types/password.html#empty-data

Usuarios habituales

  • TeNSHi
  • codek0rZ