title: FOSUserBundle Modify Form by Request
body: <p>I want to modify registration form by get request.</p>
  
  <p>If <code>?type=x</code> enable a,b,c. Else <code>?type=y</code> disable a,b,c and set <code>required =&gt; false</code>.</p>
  
  <p>This is the basic logic. How can i achieve that?</p>
  
  <p>Registration type:</p>
  
  <pre><code>&lt;?php
  
  namespace CS\UserBundle\Form\Type;
  
  use Doctrine\ORM\EntityRepository;
  use Symfony\Component\Form\FormBuilderInterface;
  use FOS\UserBundle\Form\Type\RegistrationFormType as BaseType;
  use Symfony\Component\Form\FormEvent;
  use Symfony\Component\Form\FormEvents;
  
  class RegistrationType extends BaseType
  {
      public function buildForm(FormBuilderInterface $builder, array $options)
      {
          parent::buildForm($builder, $options);
  
          $builder
              -&gt;remove('username')
              -&gt;add('name', null, array(
                  'label' =&gt; 'Yetkili Kişi',
                  'required' =&gt; true,
                  'attr' =&gt; [
                      'title' =&gt; 'İsim ve Soyisim',
                      'placeholder' =&gt; 'İsim ve Soyisim'
                  ]
              ))
              -&gt;add('business_name', null, array(
                  'label' =&gt; 'Firma Ünvanı',
                  'required' =&gt; true,
                  'attr' =&gt; [
                      'title' =&gt; 'Firma Ünvanı',
                      'placeholder' =&gt; 'Firma Adı'
                  ]
              ))
              -&gt;add('city', 'entity', array(
                  'label' =&gt; 'Şehir',
                  'empty_value' =&gt; 'Seçiniz...',
                  'class' =&gt; 'CSContactBundle:City',
                  'property' =&gt; 'name',
                  'query_builder' =&gt; function(EntityRepository $er) {
                      return $er-&gt;createQueryBuilder('c')-&gt;where('c.country_id = 1');
                  },
                  'mapped' =&gt; false,
                  'required' =&gt; true,
                  'attr' =&gt; [
                      'title' =&gt; 'Bulunduğunuz Şehir'
                  ]
              ))
              -&gt;add('town', 'entity', array(
                  'label' =&gt; 'İlçe',
                  'empty_value' =&gt; 'Önce Şehir Seçiniz...',
                  'class' =&gt; 'CSContactBundle:Town',
                  'property' =&gt; 'name',
                  'required' =&gt; true,
                  'attr' =&gt; [
                      'disabled' =&gt; 'disabled',
                      'title' =&gt; 'Bulunduğunuz İlçe'
                  ]
              ))
              -&gt;add('address', 'textarea', array(
                  'label' =&gt; 'Adres',
                  'required' =&gt; true,
                  'attr' =&gt; [
                      'title' =&gt; 'İkamet Ettiğiniz Tam Adres (Şehir ve İlçe Eklemeyin)'
                  ]
              ))
              -&gt;add('mobile', null, array(
                  'label' =&gt; 'GSM',
                  'required' =&gt; true,
                  'attr' =&gt; [
                      'class' =&gt; 'phone',
                      'title' =&gt; 'Telefon Formatı: 0XXX XXX XX XX'
                  ]
              ))
              -&gt;add('phone', null, array(
                  'label' =&gt; 'Telefon',
                  'required' =&gt; true,
                  'attr' =&gt; [
                      'class' =&gt; 'phone',
                      'title' =&gt; 'Telefon Formatı: 0XXX XXX XX XX'
                  ]
              ))
              -&gt;add('fax', null, array(
                  'label' =&gt; 'Faks',
                  'required' =&gt; false,
                  'attr' =&gt; [
                      'class' =&gt; 'phone',
                      'title' =&gt; 'Faks Formatı: 0XXX XXX XX XX'
                  ]
              ))
              -&gt;add('tax_office', null, array(
                  'label' =&gt; 'Vergi Dairesi',
                  'required' =&gt; true,
                  'attr' =&gt; [
                      'placeholder' =&gt; 'Vergi Dairesi',
                      'title' =&gt; 'Firmanızın Bağlı Olduğu Vergi Dairesi'
                  ]
              ))
              -&gt;add('tax_id', null, array(
                  'label' =&gt; 'Vergi Numarası',
                  'required' =&gt; true,
                  'attr' =&gt; [
                      'placeholder' =&gt; 'Vergi Numarası',
                      'class' =&gt; 'tax',
                      'title' =&gt; 'Firmanızın Vergi Numarası'
                  ]
              ))
              -&gt;add('captcha', 'captcha', array(
                  'label' =&gt; 'Doğrulama',
                  'required' =&gt; true,
                  'attr' =&gt; [
                      'placeholder' =&gt; 'Doğrulama Kodu',
                      'title' =&gt; 'Resimde Gördüklerinizi Yazın'
                  ]
              ));
  
  
          $factory = $builder-&gt;getFormFactory();
  
          $builder-&gt;addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) use ($builder) {
              $form = $event-&gt;getForm();
              $data = $event-&gt;getData();
          });
      }
  
      public function getName()
      {
          return 'cs_user_registration';
      }
  }
  </code></pre>