Estou tentando renderizar um modelo no Drupal 8. No Drupal 7, eu criaria um tema com hook_theme, criaria um diretório de modelos no meu módulo, soltaria o arquivo de modelo e eu poderia exibi-lo com theme (). Como eu faço o eqivilent com o Drupal 8? Eu tentei o seguinte, mas ele errou:
No twitter_pull.module
/ ** * Implementa hook_theme (). * / função twitter_pull_theme ($ existente, $ tipo, $ tema, $ caminho) { matriz de retorno ( 'twitter_pull_tweet_listing' => matriz ( 'variable' => array ( 'description' => array (), ), 'template' => 'templates / twitter_pull_tweet_listing', ), ); }
Por dentro twitter_pull / templates: the twitter_pull_tweet_listing.html.twig
Dentro do meu bloco:
$ tweet_template = array ('# theme' => 'twitter_pull_tweet_listing', '#attributes' => array ('params' => $ params)); $ output = drupal_render ($ tweet_template, array ('params' => $ params)); imprime $ output;
Eu recebo o seguinte erro nos meus logs:
Erro do usuário: "content" é uma chave de matriz de renderização inválida em Drupal \ Core \ Render \ Element :: children () (linha 89 de C: \ xampp \ htdocs \ drupal \ core \ lib \ Drupal \ Core \ Render \ Element. php).
EDIT: Outro erro:
Twig_Error_Loader: Não foi possível encontrar o modelo "modules / custom / twitter_pull / templates / templates / twitter_pull_tweet_listing.html.twig" (olhou para: C: \ xampp \ htdocs \ drupal). em Twig_Loader_Filesystem-> findTemplate () (linha 202 de C: \ xampp \ htdocs \ drupal \ core \ vendedor \ twig \ twig \ lib \ Twig \ Loader \ Filesystem.php).
Imagino que esse erro esteja ocorrendo porque não estou usando espaços para nome e carregamento automático corretamente. Onde coloco meu arquivo de modelo? Com base na mensagem de erro, tentei colocá-lo em C: \ xampp \ htdocs \ drupal \ templates \, mas ainda não funcionou.
drupal_render()
? Está esperando um booleano
templates/templates/
parte da 2ª mensagem de erro me faz pensar que você deveria tentar em 'template' => 'twitter_pull_tweet_listing',
vez de 'template' => 'templates/twitter_pull_tweet_listing',
emhook_theme()