bynder-4.0.0-beta1/modules/bynder_select2/src/Element/BynderSelect2SimpleElement.php

modules/bynder_select2/src/Element/BynderSelect2SimpleElement.php
<?php

namespace Drupal\bynder_select2\Element;

use Drupal\Component\Utility\Html;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Render\Element\Select;

/**
 * Provides a simple bynder_select2 form element.
 *
 * @FormElement("bynder_select2_simple_element")
 */
class BynderSelect2SimpleElement extends Select {

  /**
   * {@inheritdoc}
   */
  public function getInfo() {
    $info = parent::getInfo();
    $class = get_class($this);
    $info['#process'] = [
      [$class, 'processBynderSelect2'],
    ];

    return $info;
  }

  /**
   * Processes a bynder_select2 form element.
   */
  public static function processBynderSelect2(&$element, FormStateInterface $form_state, &$complete_form) {
    $element = parent::processSelect($element, $form_state, $complete_form);

    $class = 'bynder-select2-' . hash('md5', Html::getUniqueId('bynder-select2-simple-element'));

    $base_url = \Drupal::request()->getSchemeAndHttpHost();
    $element['#attributes']['class'][] = $class;
    $select2_settings = [
      'selector' => '.' . $class,
      'placeholder_text' =>  $element['#placeholder_text'],
      'multiple' => $element['#multiple'],
      'base_url' => $base_url
    ];
    if(isset($element['#loadRemoteData'])) {
      $select2_settings['loadRemoteData'] = ['url' => $base_url . $element['#loadRemoteData']];
    }

    $element['#attached']['drupalSettings']['bynder_select2'][$class] = $select2_settings;
    $element['#attached']['library'] = ['bynder_select2/bynder_select2.widget'];

    return $element;
  }


}

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

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