title: How and when to use createForm vs createFormBuilder
body: <p>I am working with <code>Symfony 3.4</code> and wonder how and when to use <code>createForm</code> vs <code>createFormBuilder</code></p>
  
  <p>In my case I need to create two different forms for the same data class, e.g. an user object <code>User</code>. The forms only differ in some additional fields. </p>
  
  <p>For example one registration form for normal users with additional fields to accept the legal terms, subscribe to the newsletter, etc. And one registration form for admin users with some other additional fields. In both cases the same <code>User</code> class is used and the additional fields are not mapped:</p>
  
  <pre><code>public function regUserAction(Request $request) {
      // Create and show user reg form
  }
  
  public function regAdminAction(Request $request) {
      // Create and show admin reg form
  }
  </code></pre>
  
  <p>Since the <code>User</code> form is needed/used in two different places it would be good idea to create a <code>UserFormType</code> and create the form using <code>createForm</code></p>
  
  <pre><code>public function regUserAction(Request $request) {
      $form = $this-&gt;createForm(UserFormType::class, $user, array());
  }
  
  public function regAdminAction(Request $request) {
      $form = $this-&gt;createForm(UserFormType::class, $user, array());
  }
  
  class UserFormType extends AbstractType {
      // setup of form fields, FormEvents handlers, etc. 
  }
  </code></pre>
  
  <p><strong>Pro</strong>: The setup of the form has to implemented only once in <code>UserFormType</code></p>
  
  <p><strong>Con:</strong> It is not possible to add custom fields to the created form, in <code>regUserAction</code> and <code>regAdminAction</code>, is it?</p>
  
  <hr>
  
  <p>Since the <code>User</code> form needs to be customized it would be a good idea to use <code>createFormBuilder</code> instead:</p>
  
  <pre><code>public function regUserAction(Request $request) {
      $formBuilder = $this-&gt;createFormBuilder($user, array())
          -&gt;add(... common form setup ...)
          -&gt;add(... custom user fields ...)
  }
  
  public function regAdminAction(Request $request) {
      $formBuilder = $this-&gt;createFormBuilder($user, array())
          -&gt;add(... common form setup ...)
          -&gt;add(... custom admin fields ...)
  }
  </code></pre>
  
  <p><strong>Pro</strong>: Possible to add custom fields to the form</p>
  
  <p><strong>Con:</strong> Common setup of the form has to be implemented again for each form.</p>
  
  <hr>
  
  <p><strong>Is there any way to mix these two approaches? To implement the common form setup only once AND to add custom fields per form?</strong></p>