最大的目标是打印出树枝形式模板/views/Form/fields.html.twig中可用的变量,这样我就可以找到可用的WHICH变量,特别是在{% block widget_attributes %}
基于字段类型(据说存在但由于某种原因无法访问,并且警告other suggestions以获取该类型。)
我只想查看所有可用的变量......以及它们所持有的值。容易,对吧?
因此,这导致了很多兔子漏洞,一些有用的文章指出了如何循环当前环境的变量:
{% block widget_attributes %}
<ol>
{% for key, value in _context %}
<li>{{ key }} :
{% if value is not iterable%}
{{ value }}
{% else %}
{{ dump(value) }}
{% endif %}
</li>
{% endfor %}
</ol>
{% set attr = attr|merge({'class': (attr.class|default('') ~ ' form-control')|trim}) %}
{{ parent() }}
{% endblock widget_attributes %}
但是这并没有打印出type
,如果它不可迭代,它实际上并没有转储该值。它会毫无错误地杀死symfony。因此,出于多种原因,调试工作至关重要。
启用转储的所有建议都不起作用。 Twig's website特别没有用,因为它没有提供上下文如何或在何处加载$ twig = new Twig_Environment(以及最新版本的最新版本是twig的1.5,但在symfony中是1.16?)。 Symfony说这将是enabled by default。但它不起作用。
app.php(加载内核已启用调试):
$kernel = new AppKernel('dev', true);
这是我的config.yml中的内容:
twig:
debug: "%kernel.debug%"
strict_variables: "%kernel.debug%"
在config_dev.yml中启用的other suggestions不会起作用:
imports:
- { resource: config.yml }
# this is from one of the suggestions, but it doesn't work and may be an older method
services:
twig.extension.debug:
class: Twig_Extension_Debug
tags: [{ name: 'twig.extension' }]
因此,在Symfony中有这么多东西,它功能强大且非常棒,直到它不起作用,然后就没有关于如何使其工作的文档。任何帮助将不胜感激。
我正在运行Symfony 2.5,其作曲家更新为Twig 1.16。
答案 0 :(得分:2)
我在其他帖子中看到的所有建议似乎都是针对较旧版本的Symfony而且它们对我不起作用。但是Twig debugging is enabled by default in Symfony现在。所以这就是我为解决问题所做的工作:
<强> 1。升级到Symfony 2.5。编辑/composer.json文件并更新symfony版本。
<强> 2。更新所需的依赖项。在命令行上运行composer update
第3。更新Twig。这也自动将twig更新为1.16(Symfony需要最低版本,因此如果你的项目需要Twig的最新版本1.5,你需要在我们自己的composer.json
文件中要求。
<强> 4。使用Debug On加载内核。确保在Dev模式下启用内核加载调试,默认情况下,这将在app_dev.php文件中(加载索引文件以访问您的开发模式)。
$kernel = new AppKernel('dev', true);
<强> 5。检查配置。确保基于内核调试模式启用了twig debug,编辑config.yml:
twig:
debug: "%kernel.debug%"
strict_variables: "%kernel.debug%"
<强> 6。检查Dev Config。确保你的config_dev.yml导入config.yml(或者至少有上面的相关配置)。
imports:
- { resource: config.yml }
执行此操作后,转储功能现在可以在Twig中使用:
{% block widget_attributes %}
{{ dump(attr) }}
{% set attr = attr|merge({'class': (attr.class|default('') ~ ' form-control')|trim}) %}
{{ parent() }}
{% endblock widget_attributes %}
答案 1 :(得分:1)
如果您尝试在产品环境中启用它。
您应将以下内容添加到app / AppKernel.php;
$bundles[] = new \Symfony\Bundle\DebugBundle\DebugBundle();
和 在app / config.yml中 编辑此行;
twig:
debug: %kernel.debug% ========> sure this set true
strict_variables: %kernel.debug%
但是请记住,如果您在实时服务器中的项目在以下方面可能是不安全的: 泄漏调试信息