Symfony2 FOSUserBundle override-Profil-form : die Feld-form leer?
Ich overrided Anmeldeformular aus FOSUserBundle mit Verkaufshilfsmittel-Felder: es funktioniert gut.
Wenn ich die gleiche Logik zu überschreiben, Profil Form : die form scheint gut mit meiner Verkaufshilfsmittel-Felder, die aber alle leer ist (die Felder enthalten keine Werte der angeschlossenen Benutzer).
Hinweis: wenn ich den Standard-Formular aus dem bundle, das Profil-Formular enthält die Werte der verbundenen Benutzer.
Gibt es eine spezielle Aktion im Vergleich zu überschreiben, das Anmeldeformular zum abrufen der Werte der verbundenen Benutzer ?
HIER IST DER 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',
);
}
}
Bitte posten Sie Ihre Fragen in Englisch blog.stackoverflow.com/2009/07/non-english-question-policy
Zeig uns etwas code.
Kannst du den code aus dem controller, wo du das Formular benutzen? Dies alles sieht gut aus, aber keiner setzt es keine Daten. Es ist nur die Beschreibung der Formen Struktur. In Ihrem controller, den Sie aufrufen müssen
Zeig uns etwas code.
Kannst du den code aus dem controller, wo du das Formular benutzen? Dies alles sieht gut aus, aber keiner setzt es keine Daten. Es ist nur die Beschreibung der Formen Struktur. In Ihrem controller, den Sie aufrufen müssen
$form->setData($user);
InformationsquelleAutor Titus | 2012-06-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fand ich den Fehler in meiner Datei ProfilFormeHandler.php : in der Funktion process (), die ich genannt parent::onSucess() anstelle von parent::process() ...
Das Ergebnis ist eine "silent" - bug (lautlos, da kein schwerwiegender Fehler angezeigt wird), durch meine Schuld natürlich
Dank für die Zeit, die Sie ausgegeben, um zu versuchen, um mir zu helfen, tut mir sehr Leid !
InformationsquelleAutor Titus