Laravel DataTable插件输出具有htmlentities的代码

时间:2016-08-17 16:01:41

标签: php laravel laravel-5

我正在为Laravel使用这个DataTable插件,该插件用于使用此jQuery DataTable插件。

我按照找到here的说明进行操作,所以这是我的控制器:

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>

为什么要这样做?

1 个答案:

答案 0 :(得分:1)

这将有助于您(取自laravel docs)

使用大括号显示原始文本

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

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

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

Hello, {!! $name !!}.

在此使用...

{{
    $datatable->html()
}}
  

忽略上述情况,这是错误的方法,请执行以下操作...

你可以像这样解码html ......

htmlspecialchars_decode($datatable->html())

并输出......