function multiple_registration_form_alter in Multiple Registration 8.2
Same name and namespace in other branches
- 8 multiple_registration.module \multiple_registration_form_alter()
- 3.x multiple_registration.module \multiple_registration_form_alter()
Implements hook_form_alter().
File
- ./
multiple_registration.module, line 184 - Contains multiple_registration.module.
Code
function multiple_registration_form_alter(&$form, FormStateInterface $form_state, $form_id) {
$storage = $form_state
->getStorage();
if (!empty($storage['form_display']) && is_object($storage['form_display'])) {
$form_display = $storage['form_display'];
if ($form_display instanceof EntityFormDisplay && $form_display
->getTargetEntityTypeId() === 'user') {
// Show only appropriate fields.
$field_definitions = \Drupal::service('entity_field.manager')
->getFieldDefinitions('user', 'user');
foreach ($field_definitions as $field_name => $field_definition) {
if (isset($form[$field_name]) && $field_definition instanceof ThirdPartySettingsInterface) {
$field_roles = $field_definition
->getThirdPartySetting('multiple_registration', 'user_additional_register_form') ?? [];
$field_roles_required = $field_definition
->getThirdPartySetting('multiple_registration', 'user_additional_register_form_required') ?? [];
if (!empty($field_roles)) {
// If something was selected.
$form[$field_name]['#access'] = MultipleRegistrationController::checkFieldAccess($field_roles);
$form[$field_name]['widget']['#required'] = MultipleRegistrationController::checkFieldAccess($field_roles_required);
}
}
}
}
}
$route = \Drupal::routeMatch()
->getRouteObject();
if ($route !== NULL && $route
->getPath() === '/user/register/{rid}') {
$rid = \Drupal::routeMatch()
->getParameter('rid');
// Hidden field to pass the rid.
$form['multiple_registration_rid'] = [
'#type' => 'hidden',
'#value' => $rid,
];
// Custom submit handler to store the rid.
$form['actions']['submit']['#submit'][] = '_multiple_registration_rid';
}
}