Widget for a Machine Name form element.

Machine Name Widget provides a field for the machine_name render element. This module does not provide a UI for configuring the widget, but rather is intended to be used by other modules (i.e. content entities).

New Projects: read me first!

You should probably be using the core patch, located here: #2685749: Add a 'machine_name' widget for string field types with a UniqueField constraint. When this lands, this module will be obsolete. You can get ahead of the migration issues by just using the patch now.

Setup

The widget accepts the same configuration as machine_name. Simply use the type machine_name and pass the same config into settings.

Example

Here's an example from Colossal Menu:

$fields['machine_name'] = BaseFieldDefinition::create('string')
  ->setLabel(t('Machine name'))
  ->setDescription(t('Machine name of the menu link'))
  ->setRequired(TRUE)
  ->setSetting('max_length', 255)
  ->addConstraint('UniqueField', [])
  ->setDisplayOptions('form', [
    'type' => 'machine_name',
    'weight' => -4,
    'settings' => [
      'source' => [
        'title',
        'widget',
        0,
        'value',
      ],
      'exists' => '\Drupal\colossal_menu\Entity\Link::loadByMachineName',
    ],
  ]);
Supporting organizations: 

Project information

Releases