address-8.x-1.x-dev/src/Plugin/Field/FieldType/ZoneItemList.php
src/Plugin/Field/FieldType/ZoneItemList.php
<?php
namespace Drupal\address\Plugin\Field\FieldType;
use Drupal\Core\Field\FieldItemList;
use Drupal\Core\Form\FormStateInterface;
/**
* Represents a list of zone item field values.
*
* Works around core not serializing/unserializing default values.
*/
class ZoneItemList extends FieldItemList {
/**
* {@inheritdoc}
*/
public function applyDefaultValue($notify = TRUE) {
if ($default_value = $this->getFieldDefinition()->getDefaultValue($this->getEntity())) {
foreach ($default_value as $index => $value) {
$default_value[$index] = unserialize($value, ['allowed_classes' => FALSE]);
}
$this->setValue($default_value, $notify);
}
else {
parent::applyDefaultValue($notify);
}
return $this;
}
/**
* {@inheritdoc}
*/
public function defaultValuesFormSubmit(array $element, array &$form, FormStateInterface $form_state) {
$default_value = parent::defaultValuesFormSubmit($element, $form, $form_state);
if ($default_value) {
foreach ($default_value as $index => $value) {
$default_value[$index] = serialize($value);
}
}
return $default_value;
}
}
