graphql_core_schema-1.0.x-dev/modules/graphql_form_schema/src/Plugin/GraphQL/DataProducer/FormItemDefaultValue.php

modules/graphql_form_schema/src/Plugin/GraphQL/DataProducer/FormItemDefaultValue.php
<?php

namespace Drupal\graphql_form_schema\Plugin\GraphQL\DataProducer;

use Drupal\Core\Datetime\DrupalDateTime;
use Drupal\graphql_form_schema\Plugin\GraphQL\EntityFormBase;

/**
 * Resolve the default value for a form item.
 *
 * @DataProducer(
 *   id = "form_item_default_value",
 *   name = @Translation("Form Item: Default Value"),
 *   description = @Translation("Resolves the default value for a form item."),
 *   produces = @ContextDefinition("any",
 *     label = @Translation("The default value.")
 *   ),
 *   consumes = {
 *     "item" = @ContextDefinition("any",
 *       label = @Translation("The form item."),
 *     ),
 *   }
 * )
 */
class FormItemDefaultValue extends EntityFormBase {

  /**
   * The resolver.
   *
   * @param array $item
   *   The form item.
   *
   * @return mixed
   *   The default value.
   */
  public function resolve(array $item) {
    $defaultValue = $item['#value'] ?? $item['#default_value'] ?? NULL;
    if (is_array($defaultValue)) {
      $result = [];
      foreach ($defaultValue as $value) {
        $result[] = $this->mapValue($value);
      }
      return $result;
    }

    return $this->mapValue($defaultValue);
  }

  /**
   * Map a single value.
   *
   * @param mixed $value
   *   The value.
   *
   * @return mixed
   *   The resolved value.
   */
  private function mapValue($value) {
    if (is_array($value)) {
      if (!empty($value['value'])) {
        return $this->mapValue($value['value']);
      }
    }
    elseif ($value instanceof DrupalDateTime) {
      return $value->format('Y-m-d\TH:i:s');
    }

    return $value;
  }

}

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

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