首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >尝试在Drupal8模块中包含资产(js、img、css)

尝试在Drupal8模块中包含资产(js、img、css)
EN

Stack Overflow用户
提问于 2018-07-17 06:11:32
回答 1查看 860关注 0票数 0

我有一个名为chess的drupal模块,其中包含要显示的不同图像、要包含的javascripts和要链接的css。

我尝试定义了一个如下所示的chess/chess.libraries.yml

chess:
  version: 1.x
  css:
    theme:
      css/chess.css: {}
  js:
    js/jquery-ui.min.js: {}
    js/jquery.ui-touch-punch.min.js: {}
    js/jquery.simulate.js: {}
    js/chess.js: {}
    js/socket.io.js: {}
    js/chess-socket.js: {}
    js/chat.js: {}
  dependencies:
    - core/jquery

并在chess/templates/index.html.twig中包含了一行{{ attach_library('chess/chess') }}。这些图像在chess/images中直播。另外,我的ChessController的渲染数组看起来像这样:

public function page(){
  $content = readfile('modules/chess/templates/index.html.twig');
  $element = array (
    '#type' => 'markup',
    '#markup' => $this->t($content),
    '#attached' => array(
    'library' => 'chess/chess'
    ),
  );

  return $element;
}

所以它附带了国际象棋库。唯一显示出来的就是包含损坏图像的html,没有css,并且在页面底部显示了一条错误消息:

网站遇到意外错误。请稍后再试。

InvalidArgumentException:$string ("7864")必须是字符串。在Drupal\Core\StringTranslation\TranslatableMarkup->__construct()中( core/lib/Drupal/Core/StringTranslation/TranslatableMarkup.php).的第133行

据我所知,没有一个翻译模块是启用的。有人知道我错过了什么吗?

更新:我将控制器的page()函数更改为read

public function page(){
  $content = readfile('modules/chess/templates/page.html.twig');
  $element = array (
    '#type' => 'markup',
    '#template' => $content,
    '#attached' => array(
      'library' => 'chess/chess'
    ),
  );

  return $element;
}

css显示出来了,但图像还没有出现。源代码还显示了资产函数,而不是填充的脚本标记。

更新2:我通过composer安装了symfony/asset,我的细枝文件现在看起来像这样:

<link href="{{ asset('css/chess.css') }}" rel="stylesheet">
<script type="text/javascript" src="{{ asset('js/jquery-1.12.min.js') }}"></script>
...
<div class="piece black queen" id="black-queen"><img src="{{ asset('images/queen-black.png') }}" /></div>

显示css,但内容显示在drupal页面的其余部分之上。有没有办法在drupal布局中将页面放到合适的位置?(此外,图像也未显示)。

更新3:我从page.html.twig中删除了所有的src="{{ asset(...) }}"标签,javascript似乎可以工作,css也是如此。剩下的事情就是如何让页面在drupal页面的框架内(而不是在它上面)工作,以及如何包含图像。

EN

回答 1

Stack Overflow用户

发布于 2018-07-17 06:17:23

我觉得你应该改成

{{ attach_library(‘国际象棋/象棋’) }}

而不是CSS文件的绝对路径。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51370755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档