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

Symfony 6.3.0中bootstrap-table数据显示异常求助

问题分析

页面刷新时先显示正确数据随后变为旧数据的核心原因是:

  1. 页面加载时,data-toggle="table"自动初始化表格,加载Twig渲染的数据库正确数据;
  2. 随后JS代码执行bootstrapTable("destroy")销毁原有表格,重新初始化时未传入正确数据源,且列定义与原表格完全不匹配,导致表格被错误的配置/旧数据覆盖。
解决方案

方案一:保留服务器端渲染(推荐,改动最小)

无需销毁重建表格,直接动态修改导出配置即可,完全保留原有渲染的正确数据:

修改你的JS代码:

$(function () {
  $("#toolbar").find("select").change(function () {
    // 直接修改表格配置,无需销毁重建
    $("#table").bootstrapTable('refreshOptions', {
      exportDataType: $(this).val(),
      exportTypes: ["csv", "excel"]
    });
  }).trigger("change");
});

同时检查HTML表格的data-field与Twig变量的字段对应关系:
比如HTML中data-field="id"对应Twig的immeuble.IDImmeuble,建议统一字段名(比如把HTML的data-field="id"改成data-field="IDImmeuble"),避免字段映射错误。

方案二:全JS初始化表格(适合动态数据场景)

如果需要完全通过JS控制表格数据,去掉Twig的tbody渲染,改为JS传入数据源:

  1. 修改Twig模板(移除tbody的循环渲染):
<table id="table" data-toolbar="#toolbar" data-pagination="true" data-page-size="25" data-search="true" data-show-export="true" data-click-to-select="true" data-search-align="left" data-show-columns="true" class="table table-list table-bordered table-striped m-auto">
    <thead>
        <tr>
        <th data-field="IDImmeuble" data-sortable="true" scope="col">N°</th>
        <th data-field="Adresse" data-sortable="true" scope="col">Adresse</th>
        <th data-field="CP" data-sortable="true" scope="col">CP</th>
        <th data-field="Ville" data-sortable="true" scope="col">Ville</th>
        <th data-field="ReferenceProprio" data-sortable="true" scope="col">Référence Propriétaire</th>
        <th data-field="DateEnquete" data-sortable="true" scope="col">Date de l'Enquête</th>
        <th data-field="Intermediaire" data-sortable="true" scope="col">Intermédiaire</th>
        <th data-field="SuiviPar" data-sortable="true" scope="col">Responsable du Dossier</th>
        <th data-field="Description" data-sortable="true" scope="col">Description</th>
        </tr>
    </thead>
    <tbody class="table-group-divider"></tbody>
</table>

<!-- 将Twig变量转为JS可识别的JSON数据 -->
<script>
const immeublesData = {{ immeubles|json_encode(constant('JSON_HEX_TAG')) }};
// 处理日期格式(如果后端返回的是原始日期字符串)
immeublesData.forEach(item => {
    item.DateEnquete = new Date(item.DateEnquete).toLocaleDateString('fr-FR');
});
</script>
  1. 修改JS代码:
$(function () {
    // 初始化表格,传入正确数据源
    $("#table").bootstrapTable({
        data: immeublesData,
        exportTypes: ["csv", "excel"],
        // 可选:如果需要复选框列,在这里添加
        columns: [
            {
                field: "state",
                checkbox: true,
                visible: $("#toolbar select").val() === "selected"
            },
            // 其他列可通过HTML定义,无需重复写,如需自定义可补充
        ]
    });

    // 处理导出类型切换
    $("#toolbar").find("select").change(function () {
        $("#table").bootstrapTable('refreshOptions', {
            exportDataType: $(this).val(),
            // 动态控制复选框列显示
            columns: $("#table").bootstrapTable('getOptions').columns.map(col => {
                if (col.field === 'state') {
                    col.visible = $(this).val() === "selected";
                }
                return col;
            })
        });
    }).trigger("change");
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 04:02:02