Render user registration form in checkout pane

by Flo   Last Updated November 12, 2017 09:07 AM

I need to allow my users to register while in checkout. This is in core (checkout pane: login or new customer, great!), but on the registration form I don't know how to display my user fields (only username, email, password for now). These fields are required on my regular register form (and are displayed), but it would be great if settings on /admin/config/people/accounts/form-display (for register display mode) were respected on the /checkout/*/login page.

How could I make my custom field appear on the checkout registration form?

I created my own checkout pane, based on modules/contrib/commerce/modules/checkout/src/Plugin/Commerce/CheckoutPane/Login.php, where user can login or register (but with only username, email and password fields). Now I can add more fields to the register form, correctly saved in user.

How could I build, render, and display the regular user registration form (which contains taxonomy term reference, select lists) here instead of manually construct inputs?

It would be nice to be able to respect the user form as it is configured on /admin/config/people/accounts/form-display, and to be able to add/remove fields without to have to modify my custom pane.

It could use this code.

$entity = \Drupal::entityTypeManager()->getStorage('user')->create(array());
$formObject = \Drupal::entityTypeManager()
  ->getFormObject('user', 'register')
$form = \Drupal::formBuilder()->getForm($formObject);

Then, inject the form into $pane_form['register'], but this is incorrect since we are in a multi-step form and this leads to a form nesting (as far as I understand).

Related Questions

How to add a link in Dropdown in drupal

Updated December 09, 2016 08:03 AM

Drupal commerce checkout form data-count

Updated December 09, 2016 08:03 AM

Checkout Pane form alter

Updated May 29, 2017 12:07 PM

How do I act after quantity change in cart?

Updated July 13, 2018 08:07 AM