【问题标题】:Twig `Variable does not exist` error despite it not being printed尽管没有打印 Twig `Variable does not exist` 错误
【发布时间】:2025-12-14 19:35:01
【问题描述】:

我正在尝试在我的控制器中处理不存在的变量,如果数据库为空,将返回一个没有任何变量的视图:

if(!$votes->findOneById(1) || !$images->findOneById(1)){
    return $this->render('admin/stats_and_images.html.twig');
}

return $this->render('admin/stats_and_images.html.twig', [
    'images' => $images->countVotesForAllImages(),
    'image_podium' => $images->getTopNImages(3),
    'form' => $form->createView(),
    'votesToday' => $votes->votesToday(),
    'votesMonth' => $votes->votesMonth(),
    'votesTotal' => $votes->votesTotal()
]);

在我看来,我正在尝试处理缺少这样的变量:

        {% if (votesTotal[0][1] is defined) and (votesToday[0][1] is defined) and (votesMonth[0][1] is defined) %}

            <div class="col-md-6">
                <h4 class="sub-section--header">Liczba Oddanych Głosów:</h4>
                <hr>
                <p>
                <div class="col-sm-6">
                    Dzisiaj:
                    <span class="text-info large-num">{{ votesToday[0][1] }}</span>
                </div>

                <div class="col-sm-6">
                    Ten miesiąc:
                    <span class="text-info large-num">{{ votesMonth[0][1] }}</span>
                </div>
                </p>
                <p>
                    <strong>Głosów ogółem: </strong><span class="text-info large-num">{{ votesTotal[0][1] }}</span>
                </p>
            </div>
            <div class="col-md-6">
                <h4 class="sub-section--header">Wygrywające zdjęcia:</h4>
                <p class="text-muted">Ten miesiąc</p>
                <hr>
                <div class="row text-center">
                    <div class="col-md-4">
                        <a 
                            href="{{ asset("uploads/"~image_podium[0][0].fileName) }}" 
                            target="blank">
                            <img 
                                src="{{ asset("uploads/"~image_podium[0][0].fileName) | imagine_filter('my_thumb') }}" alt="{{image_podium[0][0].title}}" 
                                class="site-thumbnail" 
                                title="{{image_podium[0][0].title}} - {{image_podium[0][0].author}}">
                        </a>
                        <p><strong>Głosów: {{image_podium[0]['votes']}}</strong></p>
                    </div>
                    <div class="col-md-4">
                        <a 
                            href="{{ asset("uploads/"~image_podium[1][0].fileName) }}" 
                            target="blank">
                            <img 
                                src="{{ asset("uploads/"~image_podium[1][0].fileName) | imagine_filter('my_thumb') }}" alt="{{image_podium[1][0].title}}" 
                                class="site-thumbnail" 
                                title="{{image_podium[1][0].title}} - {{image_podium[1][0].author}}">
                        </a>
                        <p>Głosów: {{image_podium[1]['votes']}}</p>
                    </div>
                    <div class="col-md-4">
                        <a 
                            href="{{ asset("uploads/"~image_podium[2][0].fileName) }}" 
                            target="blank">
                            <img 
                                src="{{ asset("uploads/"~image_podium[2][0].fileName) | imagine_filter('my_thumb') }}" alt="{{image_podium[2][0].title}}" 
                                class="site-thumbnail"
                                title="{{image_podium[2][0].title}} - {{image_podium[2][0].author}}">
                        </a>
                        <p>Głosów: {{image_podium[2]['votes']}}</p>
                    </div>
                </div>
            </div>
        {% else %}
            <h2 class="text-danger text-center">
                No votes at the moment :)
            </h2>
        {% endif %}

但尽管对所有三个字段都进行了严格的定义,但我还是得到了这个:

变量“votesToday”不存在。

并指向视图的&lt;span class="text-info large-num"&gt;{{ votesToday[0][1] }}&lt;/span&gt; 部分。

为什么会发生这种情况?如何避免?

【问题讨论】:

  • 可以在您的 Twig 文件中添加一个{{ dump(votesToday) }} 并编辑您的帖子以显示转储的内容吗?必须使用app_dev.php URL 完成。
  • 确保您没有使用模板的缓存版本。您的 code 可以按原样工作。 (刚刚删除了 assest 函数并想象 fitler)
  • 好吧,如果“votesToday”没有退出,你可能有错字或特殊字符或类似的东西,如果你从这里复制回来,也许它可能会起作用?!

标签: symfony twig


【解决方案1】:

将 $votes 发送到 twig 并使用 {{ dump(votes) }}

进行检查

如果它是一个学说实体,请检查您的吸气剂。也许是 $votes->getVotesToday()

【讨论】:

    最近更新 更多