Drupal 8 - Créer un fichier avec le « résultat » d'un template

Voici comment écrire un fichier dans drupal 8 :

$sitemaps_path = 'public://sitemaps/';
// création du dossier
if(file_prepare_directory($sitemaps_path, FILE_CREATE_DIRECTORY)) {
  // écriture du fichier (s'il existe, on le remplace)
  file_save_data($content, $sitemaps_path . 'sitemap.xml', FILE_EXISTS_REPLACE);
}
else {
  \Drupal::logger('sitemap')->error(t('Problem creating the folder @folder', ['@folder' => $sitemaps_path]));
}

Imaginons que l'on veuille écrire dans un fichier le contenu d'un renderable array voici comment l'on définit $content :

$datas = [
  '#theme' => 'xml_sitemap',
  '#urls' => [
    ['title' => 'test'],
    ['title' => 'test 2'],
  ],
];

// Ici si on ne peut pas utiliser l'injection de dépendance, on pourrait remplacer la ligne suivante par : 
// \Drupal::service('renderer')->renderPlain($datas);
$content = $this->renderer->renderPlain($datas);

 

Ajouter un commentaire

Ne sera pas publié
CAPTCHA
Désolé, pour ça, mais c'est le seul moyen pour éviter le spam...