protected function WebformEntityElementsValidator::validateNames in Webform 6.x
Same name and namespace in other branches
- 8.5 src/WebformEntityElementsValidator.php \Drupal\webform\WebformEntityElementsValidator::validateNames()
Validate elements names.
Return value
array|null If not valid, an array of error messages.
1 call to WebformEntityElementsValidator::validateNames()
- WebformEntityElementsValidator::validate in src/
WebformEntityElementsValidator.php - Validate webform elements.
File
- src/
WebformEntityElementsValidator.php, line 269
Class
- WebformEntityElementsValidator
- Webform elements validator.
Namespace
Drupal\webformCode
protected function validateNames() {
// @see \Drupal\webform_ui\Form\WebformUiElementFormBase::buildForm
$machine_name_pattern = $this->configFactory
->get('webform.settings')
->get('element.machine_name_pattern') ?: 'a-z0-9_';
switch ($machine_name_pattern) {
case 'a-z0-9_':
$machine_name_requirement = $this
->t('lowercase letters, numbers, and underscores');
break;
case 'a-zA-Z0-9_':
$machine_name_requirement = $this
->t('letters, numbers, and underscores');
break;
case 'a-z0-9_-':
$machine_name_requirement = $this
->t('lowercase letters, numbers, underscores, and dashes');
break;
case 'a-zA-Z0-9_-':
$machine_name_requirement = $this
->t('letters, numbers, underscores, and dashes');
break;
}
$messages = [];
foreach ($this->elementKeys as $name) {
if (!preg_match('/^[' . $machine_name_pattern . ']+$/', $name)) {
$line_numbers = $this
->getLineNumbers('/^\\s*(["\']?)' . preg_quote($name, '/') . '\\1\\s*:/');
$t_args = [
'%name' => $name,
'@line_number' => WebformArrayHelper::toString($line_numbers),
'@requirement' => $machine_name_requirement,
];
$messages[] = $this
->t('The element key %name on line @line_number must contain only @requirement.', $t_args);
}
elseif (in_array($name, static::$reservedNames)) {
$line_numbers = $this
->getLineNumbers('/^\\s*(["\']?)' . preg_quote($name, '/') . '\\1\\s*:/');
$t_args = [
'%name' => $name,
'@line_number' => WebformArrayHelper::toString($line_numbers),
];
$messages[] = $this
->t('The element key %name on line @line_number is a reserved key.', $t_args);
}
}
return $messages;
}