public function GeneratorForm::validateForm in AT Tools 8.3
Same name and namespace in other branches
- 8.2 at_theme_generator/src/Form/GeneratorForm.php \Drupal\at_theme_generator\Form\GeneratorForm::validateForm()
Form validation handler.
Parameters
array $form: An associative array containing the structure of the form.
\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.
Overrides FormBase::validateForm
File
- at_theme_generator/
src/ Form/ GeneratorForm.php, line 355
Class
- GeneratorForm
- Generator form.
Namespace
Drupal\at_theme_generator\FormCode
public function validateForm(array &$form, FormStateInterface $form_state) {
$values = $form_state
->getValues();
// Validate Theme Generator.
if (!empty($values['generate']['generate_machine_name'])) {
$machine_name = $values['generate']['generate_machine_name'];
$theme_data = $this->themeInfoData;
if (array_key_exists($machine_name, $theme_data) == FALSE) {
// Targets.
$target = $values['generate']['options']['generate_directory'];
$target_error = 'generate][options][generate_directory';
if ($target == 'custom') {
$target = $values['generate']['options']['generate_directory_custom'];
$target_error = 'generate][options][generate_directory_custom';
if (empty($target)) {
$form_state
->setErrorByName($target_error, t('Custom directory field is empty.'));
}
}
if (!is_dir($target) || !is_writable($target)) {
$form_state
->setErrorByName($target_error, t('The target directory does not exist or is not writable (check permissions and target directory name): <code>:target</code>.', [
':target' => $target,
]));
}
$subtheme_type = $values['generate']['generate_type'];
$source = '';
$source_error = '';
if ($subtheme_type == 'starterkit') {
$source = drupal_get_path('module', 'at_theme_generator') . '/starterkits/starterkit';
}
else {
if ($subtheme_type == 'clone') {
$source = drupal_get_path('theme', $values['generate']['generate_clone_source']);
$source_error = 'generate][generate_clone_source';
}
else {
if ($subtheme_type == 'skin') {
$source = drupal_get_path('module', 'at_theme_generator') . '/starterkits/skin';
$source_error = 'generate][generate_skin_base';
}
}
}
// Check if directories and files exist and are readable/writable etc.
if (!file_exists($source) && !is_readable($source)) {
$form_state
->setErrorByName($source_error, t('The source theme (starter kit, skin base or clone source) can not be found or is not readable:<br /><code>@source</code>', [
'@source' => $source,
]));
}
}
}
}