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