You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenCart数据库查询行数正确但TWIG模板不显示数据怎么解决

问题原因

你的TWIG模板存在遍历变量引用错误:你通过{% for task in tasks %}将tasks数组内的单条记录赋值给了临时遍历变量task,但后续所有读取单条任务字段的代码都错误调用了集合变量tasks,而非当前遍历到的单条变量task,因此无法读取到对应字段值,只会生成对应数量的空表格行。

修复方案

将tasks_info.twig中所有tasks.开头的字段引用全部替换为task.即可,修正后的视图代码如下:

<table class="table">
  <thead>
    <tr>
      <td class="text-left">{{ column_status }}</td>
      <td class="text-left">{{ column_task }}</td>
      <td class="text-right">{{ column_deadline }}</td>
    </tr>
  </thead>
  <tbody>
    {% if tasks %}
      {% for task in tasks %}
        <tr>
          <td class="text-left">
            <select name="dashboard_tasks_task_status" id="input-task-status" class="form-control">
              {% if task.task_status == 2 %}
                <option value="2" selected="selected">{{ text_task_completed }}</option>
                <option value="1">{{ text_task_pending }}</option>
                <option value="0">{{ text_task_inactive }}</option>
              {% elseif task.task_status == 1 %}
                <option value="2">{{ text_task_completed }}</option>
                <option value="1" selected="selected">{{ text_task_pending }}</option>
                <option value="0">{{ text_task_inactive }}</option>
              {% elseif task.task_status == 0 %}
                <option value="2">{{ text_task_completed }}</option>
                <option value="1">{{ text_task_pending }}</option>
                <option value="0" selected="selected">{{ text_task_inactive }}</option>
              {% endif %}
            </select>
          </td>
          <td class="text-left">
            {% if task.task_description %}
              {{ task.task_description }}
            {% else %}
              {{ text_no_description }}
            {% endif %}
          </td>
          <td class="text-right">
            {% if task.task_deadline %}
              {{ task.task_deadline }}
            {% else %}
              {{ text_no_deadline }}
            {% endif %}
          </td>
        </tr>
      {% endfor %}
    {% else %}
    <tr>
      <td class="text-center" colspan="4">{{ text_no_tasks }}</td>
    </tr>
    {% endif %}
  </tbody>
</table>

其他注意事项

修改完模板后需要清理OpenCart的缓存才能生效:

  1. 登录后台点击右上角的齿轮设置图标
  2. 分别点击「清除twig缓存」和「清除Sass缓存」即可

如果修复后仍有问题,可以在控制器的return前加一行var_dump($data['tasks']);exit;,确认控制器端的任务数组赋值是否正确。

内容的提问来源于stack exchange,提问作者user17225961

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 01:24:03