public static MachineName::validateMachineName(&$element, FormStateInterface $form_state, &$complete_form)
Form element validation handler for machine_name elements.
Note that #maxlength is validated by _form_validate() already.
This checks that the submitted value:
public static function validateMachineName(&$element, FormStateInterface $form_state, &$complete_form) { // Verify that the machine name not only consists of replacement tokens. if (preg_match('@^' . $element['#machine_name']['replace'] . '+$@', $element['#value'])) { $form_state->setError($element, t('The machine-readable name must contain unique characters.')); } // Verify that the machine name contains no disallowed characters. if (preg_match('@' . $element['#machine_name']['replace_pattern'] . '@', $element['#value'])) { if (!isset($element['#machine_name']['error'])) { // Since a hyphen is the most common alternative replacement character, // a corresponding validation error message is supported here. if ($element['#machine_name']['replace'] == '-') { $form_state->setError($element, t('The machine-readable name must contain only lowercase letters, numbers, and hyphens.')); } // Otherwise, we assume the default (underscore). else { $form_state->setError($element, t('The machine-readable name must contain only lowercase letters, numbers, and underscores.')); } } else { $form_state->setError($element, $element['#machine_name']['error']); } } // Verify that the machine name is unique. if ($element['#default_value'] !== $element['#value']) { $function = $element['#machine_name']['exists']; if (call_user_func($function, $element['#value'], $element, $form_state)) { $form_state->setError($element, t('The machine-readable name is already in use. It must be unique.')); } } }
© 2001–2016 by the original authors
Licensed under the GNU General Public License, version 2 and later.
Drupal is a registered trademark of Dries Buytaert.
https://api.drupal.org/api/drupal/core!lib!Drupal!Core!Render!Element!MachineName.php/function/MachineName::validateMachineName/8.1.x