Laravel控制器返回HTML内容显示为纯文本的问题求助
解决Laravel中返回HTML被转义为纯文本的问题
我刚好碰到过一模一样的情况!这是Laravel默认的安全机制在生效——为了防范XSS攻击,框架会自动把输出内容里的特殊字符(比如<、")转成HTML实体,导致你写的checkbox、label标签直接以纯文本形式显示,没法正常渲染。
针对你代码里的场景(看起来是用Laravel DataTables构建表格),只需要在你的表格构建链最后加上rawColumns方法,指定哪些列需要跳过转义、直接渲染HTML即可:
->addColumn('mass_delete', function ($row) { return '<input type="checkbox" class="row-select" value="' . $row->id .'">'; }) ->editColumn('installation_status', function ($row) { return ($row->installation_status) ? "<span class='label bg-green'>Required</span>" : "<span class='label bg-red'>Not Required</span>"; }) // 关键:指定不需要转义的列名 ->rawColumns(['mass_delete', 'installation_status'])
如果是在Blade视图里直接输出这些HTML内容,那要把常规的双大括号{{ }}换成{!! !!},后者会跳过自动转义:
{!! $massDeleteColumn !!} {!! $installationStatusColumn !!}
⚠️ 注意:一定要确保这些HTML内容是你自己生成的、安全可靠的(不是用户输入的内容),不然关闭转义可能会引入XSS安全风险。
内容的提问来源于stack exchange,提问作者user7528557
相关产品推荐
相关产品推荐

