我有一个名为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页面的框架内(而不是在它上面)工作,以及如何包含图像。
https://stackoverflow.com/questions/51370755
复制相似问题