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的缓存才能生效:
- 登录后台点击右上角的齿轮设置图标
- 分别点击「清除twig缓存」和「清除Sass缓存」即可
如果修复后仍有问题,可以在控制器的return前加一行var_dump($data['tasks']);exit;,确认控制器端的任务数组赋值是否正确。
内容的提问来源于stack exchange,提问作者user17225961
相关产品推荐
相关产品推荐

