Foros del Web » Programando para Internet » PHP » Symfony »

[SOLUCIONADO] FOSUserBundle edit profile

Estas en el tema de FOSUserBundle edit profile en el foro de Symfony en Foros del Web. Hola amigos, me gustaría que me aclarasen una duda. Estoy tratando de modificar la página 'editar perfil' del FOSUserBundle añadiendo mis atributos personalizados, cómo por ...
  #1 (permalink)  
Antiguo 22/07/2015, 03:01
 
Fecha de Ingreso: abril-2013
Mensajes: 75
Antigüedad: 11 años, 6 meses
Puntos: 2
FOSUserBundle edit profile

Hola amigos, me gustaría que me aclarasen una duda.

Estoy tratando de modificar la página 'editar perfil' del FOSUserBundle añadiendo mis atributos personalizados, cómo por ejemplo, nombre y apellidos reales, fecha de nacimiento, ciudad y género del usuario.

Por defecto, la página 'edit profile' incorpora los campos 'username' y 'email' para ser editados, además de incorporar el campo 'current password' que actúa cómo medida de seguridad para guardar los cambios.

En mi caso particular y por razones obvias, no me interesa que el usuario pueda editar su 'username'. Del mismo modo, al estar logueado, no veo útil tener que introducir su contraseña en 'current password' para que se apliquen los cambios.

¿Existe alguna manera de anular estas dos propiedades? Les muestro mi código

Entidad User (resumida)
Código:
use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;

class User extends BaseUser
{
    protected $id;
    protected $name;
    protected $surname;
    protected $birthday;
    protected $city;
    protected $genre;

    function getName() {
        return $this->name;
    }
    
    function setName($name) {
        $this->name = $name;
    }
}
el formulario ProfileFormType
Código:
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;

class ProfileFormType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        // add your custom field
        $builder->add('name', 'text', array(
                    'label' => 'Nombre',
                    'required' => false,
                    'attr' => array(
                        'placeholder' => 'Nombre',
                        'class'       => 'form-control',
                        'maxlength'   => '100'
                    )
                ));
    }

    public function getName()
    {
        return 'my_user_profile';
    }

    public function getParent()
    {
        return 'fos_user_registration';
    }
}
la vista
Código:
{% trans_default_domain 'FOSUserBundle' %}

<form action="{{ path('fos_user_profile_edit') }}" {{ form_enctype(form) }} method="POST">
    {{ form_errors(form) }}
        
    <div class="control-group form-group">
        <div class="controls">
            {{ form_label(form.name) }}
            {{ form_widget(form.name) }}
        </div>
    </div>
    
    <div class="control-group form-group">
        <div class="controls">
            <input class="btn btn-success" type="submit" value="{{ 'profile.edit.submit'|trans }}" />
        </div>
    </div>
        
    {{ form_row(form._token) }}
</form>
registrar el servicio
Código:
services:
    my_user.profile.form.type:
            class: AH\UserBundle\Form\Type\ProfileFormType
            tags:
                - { name: form.type, alias: my_user_profile }
config.yml
Código:
fos_user:
    db_driver: orm
    firewall_name: main
    user_class: AH\UserBundle\Entity\User
    profile:
        form:
            type: my_user_profile
  #2 (permalink)  
Antiguo 22/07/2015, 12:39
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 4 meses
Puntos: 379
Respuesta: FOSUserBundle edit profile

Revisa la documentación del bundle: https://github.com/FriendsOfSymfony/...iding_forms.md
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.

Etiquetas: edit
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:54.