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 $form->setData($user);

InformationsquelleAutor Titus | 2012-06-29

Schreibe einen Kommentar