Symfony2 FOSUserBundle remplacer le formulaire de profil : champ de formulaire vide?
Je surdéfini formulaire d'inscription à partir de FOSUserBundle avec additionels champs: il fonctionne bien.
Quand j'applique la même logique à remplacer le Formulaire de Profil : le formulaire s'affiche bien avec mon additionels domaines, mais tout est vide (les champs ne contiennent pas de valeurs de l'utilisateur connecté).
Remarque: lorsque j'utilise le formulaire par défaut à partir de la liasse le formulaire de profil contient les valeurs de l'utilisateur connecté.
Est-il une action spécifique par rapport à remplacer le formulaire d'inscription afin de récupérer les valeurs de l'utilisateur connecté ?
VOICI LE CODE :
src/Vn/UserBundle/Resources/config/services.yml
services:
...
vn_user.profile.form.type:
class: Vn\UserBundle\Form\Type\ProfileFormType
arguments: [%fos_user.model.user.class%]
tags:
- { name: form.type, alias: vn_user_profile }
vn_user.form.handler.profile:
class: Vn\UserBundle\Form\Handler\ProfileFormHandler
arguments: ["@fos_user.profile.form", "@request", "@fos_user.user_manager"]
scope: request
public: false
symfony/app/config/config.yml
fos_user:
...
profile:
form:
type: vn_user_profile
handler: vn_user.form.handler.profile
src/Vn/UserBundle/Form/Type/ProfileFormType.php
namespace Vn\UserBundle\Form\Type;
use Symfony\Component\Form\FormBuilder;
use FOS\UserBundle\Form\Type\ProfileFormType as BaseType;
class ProfileFormType extends BaseType
{
public function buildUserForm(FormBuilder $builder, array $options)
{
parent::buildUserForm($builder, $options);
//custom field
$builder->add('profile',new MyProfileFormType(),array(
'label' => 'PROFILE'
));
}
public function getName()
{
return 'vn_user_profile';
}
}
src/Vn/UserBundle/Form/Type/MyProfileFormType.php
namespace Vn\UserBundle\Form\Type;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilder;
class MyProfileFormType extends AbstractType
{
public function buildForm(FormBuilder $builder, array $options)
{
$builder->add('birthday','birthday', array(
'input' => 'array',
'widget' => 'choice',
'label' => 'Birthday',
))
->add('firstname','text', array(
'trim' => true,
'label' => 'Firstname',
))
->add('lastname','text', array(
'trim' => true,
'label' => 'Lastname',
))
->add('gender','choice', array(
'choices' => array('1' => 'Male', '2' => 'Female'),
'expanded' => true,
'required' => true,
'label' => 'Vous êtes',
));
}
public function getName()
{
return 'vn_user_myprofile';
}
public function getDefaultOptions(array $options)
{
return array(
'data_class' => 'Vn\UserBundle\Document\Profile',
);
}
}
Veuillez poster vos questions en anglais blog.stackoverflow.com/2009/07/non-english-question-policy
Nous montrer un peu de code.
Pouvez-vous poster le code du contrôleur lorsque vous utilisez le formulaire? Tout cela a l'air bien, mais il n'ensembles de données. C'est juste de décrire les formes de la structure. Dans votre contrôleur, vous devez appeler
Nous montrer un peu de code.
Pouvez-vous poster le code du contrôleur lorsque vous utilisez le formulaire? Tout cela a l'air bien, mais il n'ensembles de données. C'est juste de décrire les formes de la structure. Dans votre contrôleur, vous devez appeler
$form->setData($user);
OriginalL'auteur Titus | 2012-06-29
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé l'erreur dans mon fichier ProfilFormeHandler.php : dans la fonction process (), j'ai appelé parent::onSucess() au lieu de parent::process() ...
Le résultat est un "silencieux" bug (le silence parce qu'ils ne sont pas mortels d'erreur s'affiche) en raison de ma faute bien sûr
Merci pour le temps que vous avez passé pour essayer de m'aider, désolé !
OriginalL'auteur Titus