跳转到主要内容
木棉 提交于 2 December 2015

原文链接:Debugging compiled Twig templates

Twig模板引擎提供了配置调试的选项,自动启动(编译)模板,在文件系统里缓存编译的模板。默认的,Twig模板引擎编译到php代码中并且存储编译代码到内存中。编译后的代码不利于开发,因为改变Twig模板引擎不会立刻更新到你的Drupal站点。Twig缓存可以通过清除Drupal缓存接口清除,但对于正在开发的项目更容易改变Drupal的设置使Twig不缓存任何东西。 

注意大部分情况下你会想禁用渲染API缓存。如下指令。如果你不这样做仍然需要刷新缓存才能看到Twig模板引擎的改变因为渲染API使用关联Twig模板生成HTML然后缓存生成的HTML和你的Twig模板后续试图中不被使用。不管Twig调试的设置。

在Drupal控制台中怎样启用调试

drupal site:mode dev

这将改变你的下列sites/default/services.yml中的值

twig.config: { debug: true, auto_reload: true, cache: false }

你将看到一些相似的:

qqtu_pian_20151202160547.png

怎样手动启用调试

1.找到你站点的services.yml文件,可能在sites/default/services.yml

2.如果services.yml;复制default.services.yml并重命名为services.yml

3.编辑services.yml文件不存在启用一个或更多的下面的调试选项

4.重建缓存

找到services.yml中的twig.config参数并修改,例如:

parameters:

  twig.config:

    debug: true

Twig调试选项

debug:true

当调试启用:

  • 每一个Twig模板都有HTML注释包含主题信息,例如模板文件名称的建议。
  • 注意这将导致自动测试直接检测HTML渲染失败。自动检测,’twig_debug’也将设置成FALSE.
  • Dump()方法可以用于Twig引擎输出模板信息。
  • 当源码改变的时候Twig模板引擎自动重新编译(见下面的twig_auto_reload)
  • 不推荐用于生产环境。(默认:false)

Twig auto-reload

auto_reload:true

  • 当源码改变的时候自动重新编译Twig 模板引擎。如果不给Twig_auto_reload提供一个值,它根据Twig_debug的值确定一个值。
  • 不推荐用于生产环境。(默认:null)

Twig 缓存

cache:false

  • 默认的,Twig模板引擎编译和存储在系统文件增加性能。启用Twig缓存将在每次使用源码的时候重新编译模板。大部分的twig_auto_reload设置应该启用而不是禁用Twig缓存。
  • 不推荐用于生产环境。(默认:true)

Drupal 渲染缓存

默认的,Drupal缓存渲染区块和实体,加快后续页面加速问题。这意味着改变Twig模板引擎不会立即生效。设置渲染缓存使用空缓存后端有效禁用。 禁用渲染缓存,去掉下面的注释settings.php,复制sites/example.setings.local.php到sites/default/settings.local.php,并且清除Drupal缓存:

<?php
if (file_exists(__DIR__ . '/settings.local.php')) {
  include __DIR__ . '/settings.local.php';
}
?>

也去掉你刚刚复制的后端示例文件中的注释:

<?php
$settings['cache']['bins']['render'] = 'cache.backend.null';
$settings['cache']['bins']['dynamic_page_cache'] = 'cache.backend.null';
?>

更多的信息见#1843034: Make Twig settings configurable

Drupal渲染缓存不被Drupal控制台支持更多相关设置信息见 https://github.com/hechoendrupal/DrupalConsole/issues/1309