You are here

public function ComponentGenerateForm::writeSelected in Module Builder 8.3

Submit callback to write only the selected files.

File

src/Form/ComponentGenerateForm.php, line 212

Class

ComponentGenerateForm
Form showing generated component code.

Namespace

Drupal\module_builder\Form

Code

public function writeSelected(array $form, FormStateInterface $form_state) {
  $values = $form_state
    ->getValue('filename_list');
  $files_to_write = array_filter($values);
  $drupal_relative_module_dir = \Drupal::service('module_builder.module_file_writer')
    ->getRelativeModuleFolder($this->entity
    ->id());
  \Drupal::service('file_system')
    ->prepareDirectory($path, FileSystemInterface::CREATE_DIRECTORY);
  $count_written = 0;
  foreach (array_keys($files_to_write) as $module_relative_filepath) {
    $file_contents = $form_state
      ->get([
      'files',
      $module_relative_filepath,
    ]);
    $result = \Drupal::service('module_builder.module_file_writer')
      ->writeSingleFile($drupal_relative_module_dir, $module_relative_filepath, $file_contents);
    if ($result) {
      $count_written++;
    }
    else {
      $this
        ->messenger()
        ->addError(t("Problem writing file @file", [
        '@file' => $module_relative_filepath,
      ]));
    }
  }
  if ($count_written) {
    $this
      ->messenger()
      ->addStatus(t("Written @count files to folder @folder.", [
      '@count' => $count_written,
      '@folder' => $drupal_relative_module_dir,
    ]));
  }
}