setLabel(t('Path alias')); $properties['pid'] = DataDefinition::create('integer') ->setLabel(t('Path id')); return $properties; } /** * {@inheritdoc} */ public static function schema(FieldStorageDefinitionInterface $field_definition) { return []; } /** * {@inheritdoc} */ public function preSave() { $this->alias = trim($this->alias); } /** * {@inheritdoc} */ public function postSave($update) { if (!$update) { if ($this->alias) { $entity = $this->getEntity(); if ($path = \Drupal::service('path.alias_storage')->save('/' . $entity->urlInfo()->getInternalPath(), $this->alias, $this->getLangcode())) { $this->pid = $path['pid']; } } } else { // Delete old alias if user erased it. if ($this->pid && !$this->alias) { \Drupal::service('path.alias_storage')->delete(['pid' => $this->pid]); } // Only save a non-empty alias. elseif ($this->alias) { $entity = $this->getEntity(); \Drupal::service('path.alias_storage')->save('/' . $entity->urlInfo()->getInternalPath(), $this->alias, $this->getLangcode(), $this->pid); } } } /** * {@inheritdoc} */ public static function generateSampleValue(FieldDefinitionInterface $field_definition) { $random = new Random(); $values['alias'] = str_replace(' ', '-', strtolower($random->sentences(3))); return $values; } /** * {@inheritdoc} */ public static function mainPropertyName() { return 'alias'; } }