farm-2.x-dev/modules/core/location/src/Field/AssetLocationItemList.php
modules/core/location/src/Field/AssetLocationItemList.php
<?php
namespace Drupal\farm_location\Field;
use Drupal\Core\Field\EntityReferenceFieldItemList;
use Drupal\Core\TypedData\ComputedItemListTrait;
/**
* Computes the current location value for assets.
*/
class AssetLocationItemList extends EntityReferenceFieldItemList {
use ComputedItemListTrait;
/**
* Computes the current location value for the asset.
*/
protected function computeValue() {
// Get the asset entity.
$entity = $this->getEntity();
// Get the asset's current locations.
$locations = \Drupal::service('asset.location')->getLocation($entity);
// Update the assets current location values to match.
// @todo Cache this field computation.
foreach ($locations as $delta => $location) {
if (!empty($location->id())) {
$value = ['target_id' => $location->id()];
$this->list[$delta] = $this->createItem($delta, $value);
}
}
}
}
