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()