gpt4 book ai didi

symfony - 在 Symfony 中启用 Twig Debug dump() 的分步指南

转载 作者:行者123 更新时间:2023-12-05 04:16:52 27 4
gpt4 key购买 nike

目标

最大的目标是打印出 twig 表单模板/views/Form/fields.html.twig 中可用的变量,这样我就可以找出哪些变量可用,特别是在{% 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%"

还有 other suggestions在 config_dev.yml 中启用也不起作用:

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, Composer 更新到 Twig 1.16。

最佳答案

我在其他帖子中读到的所有建议似乎都是针对旧版本的 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。打开调试加载内核。确保内核加载时在开发模式下打开调试,默认情况下这将在您的 app_dev.php 文件中(加载的索引文件以访问您的开发模式)。

$kernel = new AppKernel('dev', true);

<强>5。检查配置。确保基于内核 Debug模式启用了 twig 调试,编辑 config.yml:

twig:
debug: "%kernel.debug%"
strict_variables: "%kernel.debug%"

6.检查开发配置。确保您的 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 %}

关于symfony - 在 Symfony 中启用 Twig Debug dump() 的分步指南,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26132574/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com