Laravel DataTable插件使用htmlentities输出代码


Laravel DataTable plugin is outputting code with htmlentities

我正在使用这个数据表插件的Laravel,这是使用这个jQuery数据表插件

我遵循这里找到的说明,所以这是我的控制器:

class FeedbackController extends Controller {
    public function UserFeedback(Request $request) {
        $t = Datatable::make(new CollectionProvider(FeedbackModel::all()))
            ->column('overall')
            ->build();
        if ($t->shouldHandle()) {
            return $t->handleRequest();
        }
        return view('admin.feedback', ['datatable' => $t->view()]);
    }
}

我的观点是:

{{
    $datatable->html()
}}

但由于某些原因,当我加载页面时它输出的html是这样的htmlentities:

<table id="dataTable">
    </table><script type="text/javascript">
    jQuery(document).ready(function () {
        // dynamic table
        oTable = jQuery('#dataTable').DataTable({
            "processing": true,
            "serverSide": true,
            "ajax": "/",
            "columns": [
                                { 'data': 'overall' },
                            ]
        });
    });
</script>

它为什么这样做?

这将帮助你(取自laravel文档)

使用花括号显示原始文本

如果您需要显示一个用花括号括起来的字符串,您可以通过在文本前加上@符号来逃避Blade的行为:

@{{ This will not be processed by Blade }}

如果不希望对数据进行转义,可以使用以下语法:

Hello, {!! $name !!}.

用在这个…

{{
    $datatable->html()
}}

忽略上面的,这是错误的方法,做下面的…

你可以像这样解码html…

htmlspecialchars_decode($datatable->html())