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

Laravel Yajra DataTables无法渲染HTML:@method("DELETE")失效求助

解决Laravel Datatables中@method("DELETE")无法解析的问题

Laravel的@method是Blade模板指令,仅在Blade视图文件中会被编译解析为对应HTML代码。你在Datatables的addColumn方法中直接返回包含@method("DELETE")的字符串时,这段内容不会经过Blade编译,会被当作纯文本输出,无法生成DELETE请求所需的隐藏字段。

以下是三种可行的解决方案:

方案1:直接写入原生HTML隐藏字段

@method("DELETE")本质是生成<input type="hidden" name="_method" value="DELETE">,直接在返回的HTML字符串中添加该原生input即可:

addColumn('action', function($farm) {
    return '<a id="updateBtn" href="/admin/farms/'.$farm->id.'/edit"><i class="bi bi-pencil-fill"></i></a>
                <form action="/admin/farms/'.$farm->id.'/delete" method="POST">
                    <input type="hidden" name="_method" value="DELETE">
                    <button id="deleteBtn" type="submit"><i class="bi bi-trash-fill"></i></button>
                </form>';
})

方案2:使用Laravel的method_field辅助函数

调用Laravel内置的method_field函数生成对应隐藏字段,直接拼接到返回内容中:

addColumn('action', function($farm) {
    return '<a id="updateBtn" href="/admin/farms/'.$farm->id.'/edit"><i class="bi bi-pencil-fill"></i></a>
                <form action="/admin/farms/'.$farm->id.'/delete" method="POST">
                    '.method_field('DELETE').'
                    <button id="deleteBtn" type="submit"><i class="bi bi-trash-fill"></i></button>
                </form>';
})

方案3:通过Blade视图渲染操作列

将操作列内容单独放到Blade视图文件中,比如resources/views/datatables/actions/farm.blade.php:

<a id="updateBtn" href="/admin/farms/{{ $farm->id }}/edit"><i class="bi bi-pencil-fill"></i></a>
<form action="/admin/farms/{{ $farm->id }}/delete" method="POST">
    @method("DELETE")
    <button id="deleteBtn" type="submit"><i class="bi bi-trash-fill"></i></button>
</form>

然后在Datatables的addColumn中渲染该视图:

addColumn('action', function($farm) {
    return view('datatables.actions.farm', compact('farm'))->render();
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 08:30:48