prepopulate-8.x-2.3/modules/og_prepopulate/og_prepopulate.module

modules/og_prepopulate/og_prepopulate.module
<?php

/**
 * @file
 * The module file for og_prepopulate.
 */

use Drupal\Core\Form\FormStateInterface;

/**
 * Implements hook_field_widget_WIDGET_TYPE_form_alter() for og_complex.
 */
function og_prepopulate_field_widget_og_complex_form_alter(&$element, FormStateInterface $form_state, $context) {
  // If this is a subsequent step of a multi-step form, the prepopulate values
  // have done their work, and the user may have modified them: bail.
  if ($form_state->isRebuilding()) {
    return;
  }
  /** @var \Drupal\Core\Field\FieldItemList $field */
  $field = $context['items'];
  if (\Drupal::request()->query->has($field->getName())) {
    $element['#after_build'][] = 'og_prepopulate_after_build';
  }
  // If a value is already assigned, then hide the og audience field.
  elseif (!$field->isEmpty()) {
    $element['#access'] = FALSE;
  }
}

/**
 * An #after_build function to set the values prepopulated in the request.
 */
function og_prepopulate_after_build($element) {
  $field_name = reset($element['#parents']);
  $entity_id = \Drupal::request()->query->get($field_name);
  /** @var \Drupal\prepopulate\Populate $populate */
  $populate = \Drupal::service('og_prepopulate.populator');
  // This lets us use URLs like example.com/node/add/page?og_audience=1.
  $populate->populateForm($element, ['target_id' => $entity_id]);
  return $element;
}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc