我有一个字符串返回到我的一个视图,如下所示:
$text = '<p><strong>Lorem</strong> ipsum dolor <img src="images/test.jpg"></p>'
我正试图用Blade显示它:
{{$text}}
但是,输出是原始字符串而不是呈现HTML . 如何在Laravel 5中使用Blade显示HTML?
PS . PHP echo() 正确显示HTML .
echo()
如果条件如下,您可以使用三种方式首先使用
{!! $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>
我希望第三种方法对刀片上使用的三元运算符是完美的 .
我去过那里,这是我的错 . 非常愚蠢的一个 .
如果你忘记了文件名中的.blade扩展名,那个文件不能理解刀片,而是运行php代码 . 你应该用
/resources/views/filename.blade.php
代替
/resources/views/filename.php
希望这对某人有所帮助
你需要这样做
执行{{}}时,字符串将自动转义
对于laravel 5
{!!html_entity_decode($text)!!}
想通过这个link,看看RachidLaasri的回答
你可以试试这个:
你应该看看:http://laravel.com/docs/5.0/upgrade#upgrade-5.0
请用
{!! $test !!}
只有在HTML的情况下,如果你想渲染数据,刺痛等使用
{{ $test }}
这是因为编译刀片文件时
{{ $test }} 转换为 <?php echo e($test) ?> 而
<?php echo e($test) ?>
{!! $test !!} 被转换为 <?php echo $test ?>
<?php echo $test ?>
试试这个 . 它对我有用 .
{{ html_entity_decode($text) }}
在Laravel Blade模板中,{{}}将转义为html . 如果要在视图中显示控制器中的html,请从字符串解码html .
还有另一种方式 . 如果对象的目的是渲染html,则可以实现具有 toHtml() 方法的 \Illuminate\Contracts\Support\Htmlable Contract .
toHtml()
\Illuminate\Contracts\Support\Htmlable
然后,您可以像这样从刀片渲染该对象: {{ $someObject }} (注意,不需要 {!! !!} 语法) .
{{ $someObject }}
{!! !!}
此外,如果你想返回html属性并且你知道它将是html,请使用 \Illuminate\Support\HtmlString class,如下所示:
\Illuminate\Support\HtmlString
public function getProductDescription() { return new HtmlString($this->description); }
然后像 {{ $product->getProductDescription() }} 一样使用它 .
{{ $product->getProductDescription() }}
当然在页面上直接渲染原始html时要负责 .
您可以使用 {!! $ text !!}用于在Laravel中呈现HTML代码
如果你使用
{{ $text }}
它不会呈现HTML代码并以字符串形式打印 .
使用 {!! $text !!} 显示数据而不转义它 . 请确保您不使用来自用户且尚未清理的数据执行此操作 .
如果要逃避数据使用
{{ $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
它很简单
{!! $ text !!}
laravel编译为dom元素,{{$ text}}打印为字符串
这适用于Laravel 5.6
<?php echo "$text"; ?>
以不同的方式
欲了解更多详情,请打开链接: - Display HTML with Blade
对于在textarea中使用tinymce和markup的人:
{{ htmlspecialchars($text) }}
在PHP Laravel中,在HTML页面中显示 $test 数据:
$test
<?PHP $test ?>
15 回答
如果条件如下,您可以使用三种方式首先使用
这是第二种方式
在叶片上使用三元运算符的第三种正确方法
我希望第三种方法对刀片上使用的三元运算符是完美的 .
我去过那里,这是我的错 . 非常愚蠢的一个 .
如果你忘记了文件名中的.blade扩展名,那个文件不能理解刀片,而是运行php代码 . 你应该用
代替
希望这对某人有所帮助
你需要这样做
执行{{}}时,字符串将自动转义
对于laravel 5
想通过这个link,看看RachidLaasri的回答
你可以试试这个:
你应该看看:http://laravel.com/docs/5.0/upgrade#upgrade-5.0
请用
只有在HTML的情况下,如果你想渲染数据,刺痛等使用
这是因为编译刀片文件时
{{ $test }}
转换为<?php echo e($test) ?>
而{!! $test !!}
被转换为<?php echo $test ?>
试试这个 . 它对我有用 .
在Laravel Blade模板中,{{}}将转义为html . 如果要在视图中显示控制器中的html,请从字符串解码html .
还有另一种方式 . 如果对象的目的是渲染html,则可以实现具有
toHtml()
方法的\Illuminate\Contracts\Support\Htmlable
Contract .然后,您可以像这样从刀片渲染该对象:
{{ $someObject }}
(注意,不需要{!! !!}
语法) .此外,如果你想返回html属性并且你知道它将是html,请使用
\Illuminate\Support\HtmlString
class,如下所示:然后像
{{ $product->getProductDescription() }}
一样使用它 .当然在页面上直接渲染原始html时要负责 .
您可以使用 {!! $ text !!}用于在Laravel中呈现HTML代码
如果你使用
它不会呈现HTML代码并以字符串形式打印 .
使用
{!! $text !!}
显示数据而不转义它 . 请确保您不使用来自用户且尚未清理的数据执行此操作 .如果要逃避数据使用
如果不想逃避数据使用
但是在Laravel-4之前你可以使用
来到Laravel-5时
您也可以使用PHP函数执行此操作
浏览PHP文档以获取此函数的参数
html_entity_decode - php.net
它很简单
laravel编译为dom元素,{{$ text}}打印为字符串
这适用于Laravel 5.6
以不同的方式
它不会呈现HTML代码并以字符串形式打印 .
欲了解更多详情,请打开链接: - Display HTML with Blade
对于在textarea中使用tinymce和markup的人:
在PHP Laravel中,在HTML页面中显示
$test
数据:以不同的方式