如何修改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
相关产品推荐
相关产品推荐

