You are here

public function LinkItem::setValue in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 core/modules/link/src/Plugin/Field/FieldType/LinkItem.php \Drupal\link\Plugin\Field\FieldType\LinkItem::setValue()

Overrides \Drupal\Core\TypedData\TypedData::setValue().

Parameters

array|null $values: An array of property values.

Overrides FieldItemBase::setValue

File

core/modules/link/src/Plugin/Field/FieldType/LinkItem.php, line 183
Contains \Drupal\link\Plugin\Field\FieldType\LinkItem.

Class

LinkItem
Plugin implementation of the 'link' field type.

Namespace

Drupal\link\Plugin\Field\FieldType

Code

public function setValue($values, $notify = TRUE) {

  // Treat the values as property value of the main property, if no array is
  // given.
  if (isset($values) && !is_array($values)) {
    $values = [
      static::mainPropertyName() => $values,
    ];
  }
  if (isset($values)) {
    $values += [
      'options' => [],
    ];
  }

  // Unserialize the values.
  // @todo The storage controller should take care of this, see
  //   SqlContentEntityStorage::loadFieldItems, see
  //   https://www.drupal.org/node/2414835
  if (is_string($values['options'])) {
    $values['options'] = unserialize($values['options']);
  }
  parent::setValue($values, $notify);
}