Laravel 5:用刀片显示HTML
我有一个string返回到我的意见之一,像这样:
$text = '<p><strong>Lorem</strong> ipsum dolor <img src="images/test.jpg"></p>'
我试图用刀片显示它:
{{$text}}
但是,输出是一个原始string,而不是呈现的HTML。 如何在Laravel 5中显示带有刀片的HTML?
PS。 PHP echo()
正确显示HTML。
你需要这样做
{!! $text !!}
当您执行{{}}时,string会自动转义
你可以试试这个:
{!! $text !!}
你应该看看: http : //laravel.com/docs/5.0/upgrade#upgrade-5.0在“ http://laravel.com/docs/5.0/upgrade#upgrade-5.0 ”
对于laravel 5
{!!html_entity_decode($text)!!}
通过这个链接找出来,参见RachidLaasri的答案
尝试这个。 它为我工作。
{{ html_entity_decode($text) }}
在Laravel Blade模板中,{{}}将会转义html。 如果你想在控制器中显示html,请从string解码html。
请用
{!! $test !!}
只有在html的情况下,而如果你想渲染数据,刺等使用
{{ $test }}
这是因为当你的刀片文件被编译
{{ $test }} is converted to <?php echo e($test) ?>
而
{!! $test !!} is converted to <?php echo $test ?>
还有另一种方法。 如果对象的目的是呈现html,您可以实现具有toHtml()
方法的\Illuminate\Contracts\Support\Htmlable
契约。
然后你可以像这样从刀片渲染这个对象: {{ $someObject }}
(注意,不需要{!! !!}
语法)。
另外,如果你想返回HTML属性,你知道它将是HTML,使用\Illuminate\Support\HtmlString
类是这样的:
public function getProductDescription() { return new HtmlString($this->description); }
然后像{{ $product->getProductDescription() }}
一样使用它。
当然,直接在页面上呈现原始html负责。
如果你想逃避数据使用
{{ $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
在Php Laravel在HTML页面中显示$ test数据: –
{{ $test }}
用不同的方式
<? $test ?>
$数据=用户::其中( '编号',1) – >第一();
在刀片页面中,
名称:{{$ data-> name}}