2015-03-25 160 views
117

显示HTML我有一个字符串返回给我的意见之一,是这样的:Laravel 5:用刀片

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

我试图用刀片将其显示:

{{$text}} 

然而,输出是一个原始字符串,而不是呈现的HTML。如何在Laravel 5中显示带有刀片的HTML?

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

回答

300

你需要在执行做这样

{!! $text !!} 

字符串会自动转义{{}}

+3

我想你应该选择这个作为答案。 – apis17 2016-02-03 07:14:18

+1

以下是Laravel提到的文档:“如果您不希望数据被转义,您可以使用以下语法:'Hello,{!! $ name !!}。”https://laravel.com /docs/5.5/blade#displaying-data – Ryan 2017-10-31 22:08:13

+0

我喜欢它,视觉上真的很清楚这是一些不同于平常的东西......! – Andrew 2018-02-18 16:12:54

24

For laravel 5

{!!html_entity_decode($text)!!} 

通过这个link想通了,看到RachidLaasri回答

+1

Thanks..its working .. {!! html_entity_decode($ data)!!} – 2017-04-06 07:29:08

+0

这是一个真实的答案!谢谢 – 2018-01-11 18:51:03

5

试试这个。它为我工作。

{{ html_entity_decode($text) }} 

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

6

请使用

{!! $test !!} 

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

{{ $test }} 

这是因为当你的刀片文件编译

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

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

3

还有另一种方法。如果对象目的是呈现html,则可以实施\Illuminate\Contracts\Support\Htmlable合同,该合同具有toHtml()方法。

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

此外,如果你想返回的HTML属性,你知道这将是HTML中,使用\Illuminate\Support\HtmlString类是这样的:

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

,然后使用它像{{ $product->getProductDescription() }}

当然,直接在页面上呈现原始HTML负责。

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

0

在PHP Laravel来显示HTML $的测试数据做页: -

{{ $test }} 

以不同的方式

<? $test ?> 
-3

$ data = User :: where('id',1) - > first();

在刀片页面,

名称:{{$数据 - >名}}

0

您可以使用{! $文字!!}用于渲染HTML代码Laravel

{!! $text !!} 

如果使用

{{ $text }} 

它不会呈现HTML代码,并打印作为一个字符串。

0

它的一个简单

{! $文本!}

laravel编译为DOM元素和{{$文字}}打印作为一个字符串