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') ->setEntity($ entity); $ 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).