我正在尝试让Web调试栏出现在Symfony 2.8中,但我无法使其工作。
我的模板有一个结束标记。调用WebDebugToolbarListener但在这种情况下中止:
if (self::DISABLED === $this->mode
|| !$response->headers->has('X-Debug-Token')
|| $response->isRedirection()
|| ($response->headers->has('Content-Type') && false === strpos($response->headers->get('Content-Type'), 'html'))
|| 'html' !== $request->getRequestFormat()
|| false !== stripos($response->headers->get('Content-Disposition'), 'attachment;')
) {
return;
}
$this->injectToolbar($response, $request);
我进行了调试,发现“X-Debug-Token”永远不会包含在标题中。这就是为什么从不调用injectToolbar方法的原因。当我对工具栏显示的特定行|| !$response->headers->has('X-Debug-Token')
发表评论时,我会收到例外:
“参数”标记“for route”_wdt“必须匹配”[^ /] ++“(”“给定)到 生成相应的网址。“
显然处理这个问题的方法也是错误的。
我做错了什么?我没有想法。
以下是我配置的内容:
#config_dev.yml
framework:
router:
resource: "%kernel.root_dir%/config/routing_dev.yml"
strict_requirements: true
profiler: { only_exceptions: true }
web_profiler:
toolbar: true
intercept_redirects: false
position: bottom
//app_dev.php
Debug::enable();
require_once __DIR__.'/../app/AppKernel.php';
$kernel = new AppKernel('dev', true);
//AppKernel.php
if (in_array($this->getEnvironment(), array('dev', 'test'))) {
$bundles[] = new Symfony\Bundle\DebugBundle\DebugBundle();
$bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
$bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle();
$bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle();
}
#routing_dev.yml
_wdt:
resource: "@WebProfilerBundle/Resources/config/routing/wdt.xml"
prefix: /_wdt
_profiler:
resource: "@WebProfilerBundle/Resources/config/routing/profiler.xml"
prefix: /_profiler
_configurator:
resource: "@SensioDistributionBundle/Resources/config/routing/webconfigurator.xml"
prefix: /_configurator
答案 0 :(得分:1)
显然我必须明确地启用探查器(设置X-Debug-Token)。 RTM获胜。我过去从未这样做过。
关键是设置only_exceptions: false
。否则,探查器不会收集任何数据,也不会设置X-Debug-Token,因此工具栏不会附加。我过去已将此标志设置为true,因为我的缓存目录增长非常快。
默认情况下,对于开发和测试环境,enabled
标志设置为true。
#config_dev.yml
framework:
router:
resource: "%kernel.root_dir%/config/routing_dev.yml"
strict_requirements: true
profiler: { only_exceptions: false }