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:
el formulario ProfileFormTypeuse 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; } }
Código:
la vistause 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'; } }
Código:
registrar el servicio{% 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>
Código:
config.ymlservices: my_user.profile.form.type: class: AH\UserBundle\Form\Type\ProfileFormType tags: - { name: form.type, alias: my_user_profile }
Código:
fos_user: db_driver: orm firewall_name: main user_class: AH\UserBundle\Entity\User profile: form: type: my_user_profile