You are here

public function PluginId::setValue in Plugin 8.2

Sets the data value.

Parameters

mixed|null $value: The value to set in the format as documented for the data type or NULL to unset the data value.

bool $notify: (optional) Whether to notify the parent object of the change. Defaults to TRUE. If a property is updated from a parent object, set it to FALSE to avoid being notified again.

Throws

\InvalidArgumentException If the value input is inappropriate.

\Drupal\Core\TypedData\Exception\ReadOnlyException If the data is read-only.

Overrides PrimitiveBase::setValue

File

src/Plugin/DataType/PluginId.php, line 43

Class

PluginId
Provides a plugin ID data type.

Namespace

Drupal\plugin\Plugin\DataType

Code

public function setValue($value, $notify = TRUE) {
  $value = (string) $value;
  $plugin_instance = $this->parent
    ->getContainedPluginInstance();
  if (!$value) {
    $this->parent
      ->resetContainedPluginInstance();
  }
  elseif (!$plugin_instance || $plugin_instance
    ->getPluginId() != $value) {
    $plugin_instance = $this->parent
      ->getPluginType()
      ->getPluginManager()
      ->createInstance($value);
    $this->parent
      ->setContainedPluginInstance($plugin_instance);
  }
  $this->parent
    ->onChange($this
    ->getName());
}