MachineNameWidget.php in Machine Name Widget 8
File
src/Plugin/Field/FieldWidget/MachineNameWidget.php
View source
<?php
namespace Drupal\machine_name_widget\Plugin\Field\FieldWidget;
use Drupal\Core\Field\FieldItemListInterface;
use Drupal\Core\Field\Plugin\Field\FieldWidget\StringTextfieldWidget;
use Drupal\Core\Form\FormStateInterface;
class MachineNameWidget extends StringTextfieldWidget {
public static function defaultSettings() {
$settings = parent::defaultSettings();
foreach (self::getSettingsKeys() as $key) {
$settings[$key] = '';
}
return $settings;
}
public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state) {
$element = parent::formElement($items, $delta, $element, $form, $form_state);
$element['value']['#type'] = 'machine_name';
foreach ($this
->getSettingsKeys() as $key) {
if ($setting = $this
->getSetting($key)) {
$element['value']['#machine_name'][$key] = $setting;
}
}
if (empty($element['value']['#machine_name']['label'])) {
if ($label = $items
->getFieldDefinition()
->getLabel()) {
$element['value']['#machine_name']['label'] = (string) $label;
}
}
return $element;
}
protected static function getSettingsKeys() {
return [
'exists',
'source',
'label',
'replace_pattern',
'replace',
];
}
}