Laravel 5:使用Blade显示HTML

问题描述 投票:201回答:16

我有一个字符串返回到我的一个视图,如下所示:

$text = '<p><strong>Lorem</strong> ipsum dolor <img src="images/test.jpg"></p>'

我正试图用Blade显示它:

{{$text}}

但是,输出是原始字符串而不是呈现的HTML。如何在Laravel 5中使用Blade显示HTML?

PS。 PHP echo()正确显示HTML。

laravel laravel-5 blade
16个回答
532
投票

你需要使用

{!! $text !!}

使用{{ $text }}时,该字符串将自动转义。


3
投票

你可以用很多方式在laravel 5 ..

{!! $text !!}

{!! html_entity_decode($text) !!}

1
投票

如果要逃避数据使用

{{ $html }}

如果不想逃避数据使用

{!! $html !!}

但是在Laravel-4之前你可以使用

{{ HTML::link('/auth/logout', 'Sign Out', array('class' => 'btn btn-default btn-flat')) }}

来到Laravel-5时

{!! HTML::link('/auth/logout', 'Sign Out', array('class' => 'btn btn-default btn-flat')) !!} 

您也可以使用PHP函数执行此操作

{{ html_entity_decode($data) }}

浏览PHP文档以获取此函数的参数

html_entity_decode - php.net


1
投票

这适用于Laravel 5.6

<?php echo "$text"; ?>

以不同的方式

{!! $text !!}

它不会呈现HTML代码并以字符串形式打印。

欲了解更多详情,请打开链接: - Display HTML with Blade


1
投票

如果条件如下,您可以使用三种方式首先使用

{!! $text !!}

这是第二种方式

<td class="nowrap">
@if( $order->status == '0' )
    <button class="btn btn-danger">Inactive</button>
@else
    <button class="btn btn-success">Active</button>
@endif
</td>

在刀片上使用三元运算符的第三种正确方法

<td class="nowrap">
      {!! $order->status=='0' ? 
          '<button class="btn btn-danger">Inactive</button> : 
          '<button class="btn btn-success">Active</button> !!}
</td>

我希望第三种方法适用于刀片上使用的三元运算符。


0
投票

对于在textarea中使用tinymce和markup的人:

{{ htmlspecialchars($text) }}

0
投票

我去过那里,这是我的错。而且非常愚蠢。

如果你忘记了文件名中的.blade扩展名,那个文件不能理解刀片,而是运行php代码。你应该用

/resources/views/filename.blade.php

代替

/resources/views/filename.php

希望这对某人有所帮助


0
投票

试试这个,它有效:

@php 
   echo $text; 
@endphp

50
投票

对于laravel 5

{!!html_entity_decode($text)!!}

想通过这个link,看看RachidLaasri的回答


34
投票

你可以试试这个:

{!! $text !!}

你应该看看:http://laravel.com/docs/5.0/upgrade#upgrade-5.0


14
投票

请用

{!! $test !!} 

只有在HTML的情况下,如果你想渲染数据,刺痛等使用

{{ $test }}

这是因为编译刀片文件时

{{ $test }}转换为<?php echo e($test) ?>

{!! $test !!}被转换为<?php echo $test ?>


8
投票

试试这个。它对我有用。

{{ html_entity_decode($text) }}

在Laravel Blade模板中,{{}}将转义为html。如果要在视图中显示控制器中的html,请从字符串解码html。


8
投票

还有另一种方式。如果对象的目的是渲染html,你可以实现具有\Illuminate\Contracts\Support\Htmlable方法的toHtml()契约。

然后你可以像这样从刀片渲染该对象:{{ $someObject }}(注意,不需要{!! !!}语法)。

此外,如果你想返回html属性,你知道它将是html,使用\Illuminate\Support\HtmlString类如下:

public function getProductDescription()
{
    return new HtmlString($this->description);
}

然后像{{ $product->getProductDescription() }}一样使用它。

当然在页面上直接渲染原始html时要负责。


5
投票

您可以使用 {!! $ text !!}用于在Laravel中呈现HTML代码

{!! $text !!}

如果你使用

{{ $text }}

它不会呈现HTML代码并以字符串形式打印。


3
投票

使用{!! $text !!}to显示数据而不转义它。请确保您不使用来自用户的数据并且尚未清除的数据。


3
投票

它很简单

{!! $text !!}

laravel编译为dom元素,{{$text}}打印为字符串

© www.soinside.com 2019 - 2024. All rights reserved.