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:
- Does not contain the replacement character only.
- Does not contain disallowed characters.
- Is unique; i.e., does not already exist.
- Does not exceed the maximum length (via #maxlength).
- Cannot be changed after creation (via #disabled).
File
- core/lib/Drupal/Core/Render/Element/MachineName.php, line 219
Class
- MachineName
- Provides a machine name render element.
Namespace
Drupal\Core\Render\Element
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | 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.' )); } } } |
Please login to continue.