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

Posté le Samedi 27 avril 2019 - 11:35

Voici comment écrire un fichier dans drupal 8 :

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

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

  1. $datas = [
  2. '#theme' => 'xml_sitemap',
  3. '#urls' => [
  4. ['title' => 'test'],
  5. ['title' => 'test 2'],
  6. ],
  7. ];
  8.  
  9. // Ici si on ne peut pas utiliser l'injection de dépendance, on pourrait remplacer la ligne suivante par :
  10. // \Drupal::service('renderer')->renderPlain($datas);
  11. $content = $this->renderer->renderPlain($datas);

 

 

Ajouter un commentaire

Ne sera pas publié

HTML restreint

  • Balises HTML autorisées : <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • Les lignes et les paragraphes vont à la ligne automatiquement.
  • Les adresses de pages web et les adresses courriel se transforment en liens automatiquement.