commerce_product_bundles-8.x-1.0/src/Plugin/Field/FieldType/BundleRefVariationField.php

src/Plugin/Field/FieldType/BundleRefVariationField.php
<?php

namespace Drupal\commerce_product_bundles\Plugin\Field\FieldType;

use Drupal\Core\Field\FieldItemBase;
use Drupal\Core\Field\FieldItemInterface;
use Drupal\Core\TypedData\DataDefinition;
use Drupal\Core\Field\FieldStorageDefinitionInterface;

/**
 * Plugin implementation of the 'bundle_ref_var_field' field type.
 *
 * @FieldType(
 *   id = "bundle_ref_var_field",
 *   label = @Translation("Commerce product bundle reference variants field"),
 *   description = @Translation("Field containing ref quantity and variationns for line item."),
 *   category = @Translation("Commerce Product Bundles"),
 *   default_widget = "bundle_ref_var_field_default",
 *   default_formatter = "bundle_ref_var_field_formatter"
 * )
 */
class BundleRefVariationField extends FieldItemBase implements FieldItemInterface {

  /**
   * {@inheritdoc}
   */
  public static function schema(FieldStorageDefinitionInterface $field_definition) {
    return [
      'description' => 'The base table for Commerce product bundle field type.',
      'columns' => [
        'product_var_id' => [
          'description' => 'The ID of the target entity.',
          'type' => 'int',
          'unsigned' => TRUE,
        ],
        'quantity' => [
          'description' => 'Product variation quantity',
          'type' => 'int',
          'not null' => TRUE,
          'default' => 1,
        ],
      ],
    ];
  }

  /**
   * {@inheritdoc}
   */
  public static function propertyDefinitions(FieldStorageDefinitionInterface $field_definition) {
    $properties['product_var_id'] = DataDefinition::create('integer')
      ->setLabel('Product')
      ->setSetting('unsigned', TRUE);

    $properties['quantity'] = DataDefinition::create('integer')
      ->setLabel('Quantity')
      ->setSetting('unsigned', TRUE);

    return $properties;
  }

  /**
   * {@inheritdoc}
   */
  public function setValue($values, $notify = TRUE) {
    $this->values = [];
    if (!isset($values)) {
      return;
    }

    $product_var_id = NULL;
    if(isset($values['product_var_id'])){
      $product_var_id = $values['product_var_id'];
    }
    $this->values['product_var_id'] = $product_var_id;

    $quantity = NULL;
    if(isset($values['quantity'])){
      $quantity = $values['quantity'];
    }
    $this->values['quantity'] = $quantity;

    // Notify the parent of any changes.
    if ($notify && isset($this->parent)) {
      $this->parent->onChange($this->name);
    }
  }

  /**
   * {@inheritdoc}
   */
  public static function mainPropertyName() {
    // A map item has no main property.
    return NULL;
  }

  /**
   * {@inheritdoc}
   */
  public function isEmpty() { }

}

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

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