Sto provando a eseguire il rendering di un modello in Drupal 8. In Drupal 7, creerei un tema con hook_theme, creerei una directory di modelli nel mio modulo, lascerei cadere il file modello e potrei visualizzarlo con theme (). Come faccio l'eqivilent con Drupal 8? Ho provato quanto segue, ma si verificano errori:
In twitter_pull.module
/ ** * Implementa hook_theme (). * / funzione twitter_pull_theme ($ esistente, $ tipo, $ tema, $ percorso) { matrice di ritorno ( 'twitter_pull_tweet_listing' => array ( 'variabili' => array ( 'description' => array (), ), 'template' => 'templates / twitter_pull_tweet_listing', ), ); }
All'interno di twitter_pull / modelli: il twitter_pull_tweet_listing.html.twig
Nel mio blocco:
$ tweet_template = array ('# theme' => 'twitter_pull_tweet_listing', '#attributes' => array ('params' => $ params)); $ output = drupal_render ($ tweet_template, array ('params' => $ params)); stampa $ output;
Ricevo il seguente errore nei miei registri:
Errore utente: "contenuto" è una chiave dell'array di rendering non valida in Drupal \ Core \ Render \ Element :: children () (riga 89 di C: \ xampp \ htdocs \ drupal \ core \ lib \ Drupal \ Core \ Render \ Element. php).
EDIT: un altro errore:
Twig_Error_Loader: impossibile trovare il modello "moduli / personalizzato / twitter_pull / modelli / modelli / twitter_pull_tweet_listing.html.twig" (esaminato in: C: \ xampp \ htdocs \ drupal). in Twig_Loader_Filesystem-> findTemplate () (riga 202 di C: \ xampp \ htdocs \ drupal \ core \ vendor \ twig \ twig \ lib \ Twig \ Loader \ Filesystem.php).
Immagino che questo errore stia accadendo perché non sto usando gli spazi dei nomi e il caricamento automatico non è corretto. Dove metto il mio file modello? Sulla base del messaggio di errore, ho persino provato a inserirlo in C: \ xampp \ htdocs \ drupal \ templates \ ma non ha ancora funzionato.
drupal_render()
? Si aspetta un booleano
templates/templates/
parte nel secondo messaggio di errore mi fa pensare che dovresti provare 'template' => 'twitter_pull_tweet_listing',
invece di 'template' => 'templates/twitter_pull_tweet_listing',
inhook_theme()