我有一个字符串返回到我的一个视图,像这样:
$text = '<p><strong>Lorem</strong> ipsum dolor <img src="images/test.jpg"></p>'
我试图用Blade显示它:
{{$text}}
但是,输出是一个原始字符串,而不是呈现的HTML。我如何显示HTML与刀片在Laravel?
PS. PHP echo()正确显示HTML。
我有一个字符串返回到我的一个视图,像这样:
$text = '<p><strong>Lorem</strong> ipsum dolor <img src="images/test.jpg"></p>'
我试图用Blade显示它:
{{$text}}
但是,输出是一个原始字符串,而不是呈现的HTML。我如何显示HTML与刀片在Laravel?
PS. PHP echo()正确显示HTML。
当前回答
{! !!!不安全。
阅读此处:https://laravel.com/docs/5.6/blade#displaying-data
你可以试试:
@php
echo $variable;
@endphp
其他回答
我去过那里,那是我的错。非常愚蠢的一个。
如果您忘记了文件名中的.blade扩展名,则该文件不理解blade,而是运行PHP代码。你应该使用
/resources/views/filename.blade.php
而不是
/resources/views/filename.php
希望这能帮助到一些人
你可以用很多方法在laravel ..
{!! $text !!}
{!! html_entity_decode($text) !!}
这在Laravel 5.6中工作得很好
<?php echo "$text"; ?>
以不同的方式
{!! $text !!}
它不会呈现HTML代码并将其打印为字符串。
欲了解更多详细信息,请打开链接:-显示HTML与刀片
你可以试试这个:
{!! $text !!}
你应该看看:http://laravel.com/docs/5.0/upgrade#upgrade-5.0
还有另一种方法。如果对象的目的是渲染html,您可以实现具有toHtml()方法的\Illuminate\Contracts\Support\Htmlable合约。
然后,您可以像这样从blade渲染该对象:{{$someObject}}(注意,不需要{!!!!}语法)。
此外,如果你想返回html属性,并且你知道它将是html,使用\Illuminate\Support\HtmlString类,如下所示:
public function getProductDescription()
{
return new HtmlString($this->description);
}
然后像{{$product->getProductDescription()}}那样使用它。
当然,在页面上直接渲染原始html时要负责任。