Laravel中DataTable渲染函数拼接路由参数失败求助
问题分析
你的核心问题是模板字符串的URL拼接语法错误,导致无法正确生成带ID的路由地址。
解决方案
修正render函数里的表单action拼接逻辑,去掉多余的+号,直接在模板字符串中用${row.id}插入ID值:
{ data: null, "render":function(row, type, val, meta){ return ` <form method="post" action="/xx/yyy/${row.id}"> @csrf <button>send</button> </form> `; }, "orderable": false },
关键说明
- 模板字符串(
`包裹的内容)内部直接通过${变量}插入值,不需要额外的+号拼接。你之前写的"/xx/yyy/"+${row[id]}属于语法错误,会导致生成的URL格式混乱。 row是DataTable返回的当前行数据对象,直接用row.id访问ID属性比row[id]更直观且不易出错。- 额外注意:如果这段JS代码是放在独立的
.js文件中,Laravel的@csrf指令不会被解析,需要手动添加CSRF令牌字段:
若代码写在Blade模板内,则<input type="hidden" name="_token" value="{{ csrf_token() }}">@csrf可以正常生成令牌字段。
内容的提问来源于stack exchange,提问作者RA.IBOY
相关产品推荐
相关产品推荐

