commerce_api-8.x-1.x-dev/src/Plugin/Field/FieldType/PaymentGateway.php
src/Plugin/Field/FieldType/PaymentGateway.php
<?php
declare(strict_types=1);
namespace Drupal\commerce_api\Plugin\Field\FieldType;
use Drupal\commerce_order\Entity\OrderInterface;
use Drupal\Core\Field\FieldItemBase;
use Drupal\Core\Field\FieldStorageDefinitionInterface;
use Drupal\Core\StringTranslation\TranslatableMarkup;
use Drupal\Core\TypedData\DataDefinition;
/**
* @FieldType(
* id = "payment_gateway_id",
* label = @Translation("Payment gateway"),
* no_ui = TRUE,
* list_class = "\Drupal\commerce_api\Plugin\Field\FieldType\PaymentGatewayItemList",
* )
*
* @property string $value
*/
final class PaymentGateway extends FieldItemBase {
/**
* {@inheritdoc}
*/
public static function propertyDefinitions(FieldStorageDefinitionInterface $field_definition) {
$properties['value'] = DataDefinition::create('string')
->setLabel(new TranslatableMarkup('Payment gateway ID'))
->setRequired(TRUE);
return $properties;
}
/**
* {@inheritdoc}
*/
public static function schema(FieldStorageDefinitionInterface $field_definition) {
return [];
}
/**
* {@inheritdoc}
*/
public function preSave() {
$order = $this->getEntity();
assert($order instanceof OrderInterface);
$order->set('payment_gateway', $this->value);
}
}
