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