现象:
在Drupal8开发中,可能会遇到这样的问题。Drupal8未登录情况下浏览,部分jquery没有生效,登录状态为正常。
解决:
Drupal 8 考虑到性能的提升,javascript 不再在每个页面都加载,这意味这对匿名用户来说,在很多的页面,都不在有Jquery甚至javascript被加载。
尽管这是一件好事,但有时候你需要jQuery,比如ajax的使用,那么如何加载这些文件呢,一个方法是使用hoo_page_attachments()来#attach你自己的library到这个页面,然而,推荐的方法是医用这个library到渲染的数组中,因为这样他只是在需要的时候才会被加载。
我们需要创建一个文件my_module.libraries.yml 或者 my_theme.libraries.yml,在这个文件中,我们添加:
my_scripts:
version: VERSION
js:
js/scripts.js:{}
dependencies:
- core/jquery
- core/drupal.ajax
- core/drupal
- core/drupalSettings
- core/jquery.once
my_scripts将是我们在后面需要引用的library的名字
你可以看到,我们不再加载所有的js和css,我们只是使用依赖加载脚本。好,现在剩下的是引用这个library了。
$render_array['#attached']['library'][]='my_module/my_scripts';
希望这个可以帮到你,由Drupal长风总结记录。