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

如何修改Laravel控制器代码使DataTables展示列表而非逗号分隔内容

问题原因

你当前将每个字段的多条数据以数组格式直接传给DataTables,组件默认会将数组处理为逗号拼接的纯文本,因此无法呈现换行的列表效果。你已经配置了->escapeColumns([])关闭HTML转义,只需要将数组拼接为带换行标签的HTML字符串即可实现预期效果。

修改后的代码

$stock = StockAdjustment::with('product_adjustment')->get();
$data = array();
foreach ($stock as $list) {
    $row = array();
    $sku = array();
    $product_name = array();
    $available = array();
    $adjust_qty = array();
    $total = array();
    $note = array();
    $date = Carbon::parse($list->create_at);
    $row[] = $date->format('d-m-Y');
    foreach($list->product_adjustment as $product){
        $sku[] = $product->product['sku'];
        $product_name[] = $product->product['product_name'];
        $available[] = $product->available;
        $adjust_qty[] = $product->adjustment_qty;
        $total[] = $product->total;
        $note[] = $product->note;
    }
    // 将数组用<br>换行标签拼接为字符串,替代原来直接传数组的逻辑
    $row[] =  implode('<br>', $sku);
    $row[] =  implode('<br>', $product_name);
    $row[] =  implode('<br>', $available);
    $row[] =  implode('<br>', $adjust_qty);
    $row[] =  implode('<br>', $total);
    $row[] =  implode('<br>', $note);
    $row[] = $list->user['name'];
    $data[] = $row;
}
return DataTables::of($data)->escapeColumns([])->make(true);

可选优化

如果需要更规范的列表样式,也可以将每个数组项拼接为<li>元素,外层套<ul>标签,样式适配性更好,示例替换逻辑:

$row[] = '<ul><li>'.implode('</li><li>', $sku).'</li></ul>';

其他字段同理修改即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 05:06:04