我正在尝试在Drupal 8中渲染模板。在Drupal 7中,我将使用hook_theme创建主题,在模块中创建模板目录,将模板文件放入其中,然后可以使用theme()显示它。如何使用Drupal 8?我尝试了以下操作,但出错了:
在twitter_pull.module中
/ ** *实现hook_theme()。 * / 功能twitter_pull_theme($ existing,$ type,$ theme,$ path){ 返回数组( 'twitter_pull_tweet_listing'=>数组( '变量'=>数组( '描述'=> array(), ), '模板'=>'模板/ twitter_pull_tweet_listing', ), ); }
内部twitter_pull / templates:twitter_pull_tweet_listing.html.twig
在我的块内:
$ tweet_template = array('#theme'=>'twitter_pull_tweet_listing','#attributes'=> array('params'=> $ params)); $ output = drupal_render($ tweet_template,array('params'=> $ params)); 打印$ output;
我的日志中出现以下错误:
用户错误:“内容”是Drupal \ Core \ Render \ Element :: children()中的无效渲染数组键(C:\ xampp \ htdocs \ drupal \ core \ lib \ Drupal \ Core \ Render \ Element的第89行。 php)。
编辑:另一个错误:
Twig_Error_Loader:无法找到模板“ modules / custom / twitter_pull / templates / templates / twitter_pull_tweet_listing.html.twig”(查找到:C:\ xampp \ htdocs \ drupal)。在Twig_Loader_Filesystem-> findTemplate()中(C:\ xampp \ htdocs \ drupal \ core \ vendor \ twig \ twig \ lib \ Twig \ Loader \ Filesystem.php的第202行)。
我认为发生此错误是因为我没有使用名称空间并正确自动加载。模板文件放在哪里?根据错误消息,我什至尝试将其放在C:\ xampp \ htdocs \ drupal \ templates \中,但仍然无法正常工作。
twitter_pull_tweet_listing.html.twig中有什么?
—
克莱夫(Clive)
只是一个占位符:文本“这是一个树枝模板”
—
user1015214 2014年
要将参数数组作为第二个参数传递的任何特殊原因
—
克莱夫
drupal_render()
?该公司预计,一个布尔
不,那是一个错误。我取出了drupal_render的第二个参数,但我仍然遇到相同的问题。我正在编辑上面的问题,以包括我看到的第二个错误。
—
user1015214 2014年
将
—
克莱夫
templates/templates/
在第二个错误消息部分让我觉得你应该尝试'template' => 'twitter_pull_tweet_listing',
,而不是'template' => 'templates/twitter_pull_tweet_listing',
在hook_theme()