【问题标题】:HTML returning as text Laravel ControllerHTML 作为文本返回 Laravel 控制器
【发布时间】:2022-04-19 15:39:52
【问题描述】:

我正在尝试从 Laravel 控制器返回 HTML,但它作为计划文本返回:
示例:<input type="checkbox" class="row-select" value="9">

->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>";
})

【问题讨论】:

  • 它在哪里显示?
  • 在行尾添加-&gt;rawColumns(['mass_delete', 'installation_status'])

标签: php html laravel


【解决方案1】:

默认情况下,Blade {{ }} 语句会通过 PHP 的 htmlspecialchars 函数自动发送,以防止 XSS 攻击。如果您不希望您的数据被转义,您可以使用 {!! !!} 语法:

举例

控制器.php

public function index()
{
    $html = "<b>Hello</b>";

    return view('welcome', compact('html));
}

welcome.blade.php

<html>
    <body>
        {{ $html }}
        <br/>
        {!! $html !!}
    </body>
</html>

结果

<b>Hello</b>
Hello //but bold

【讨论】:

    【解决方案2】:

    看看这个,你可能正在使用Laravel Datatables。如果是这种情况,为了在表格本身中呈现 HTML,您需要使用 rawColumns() 函数:

    ->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']);
    

    【讨论】:

      猜你喜欢
      • 2021-07-12
      • 2019-05-07
      • 1970-01-01
      • 1970-01-01
      • 2021-07-11
      • 2016-01-21
      • 1970-01-01
      • 2015-10-15
      • 2014-06-24
      相关资源
      最近更新 更多