2015-03-25 219 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元素和{{$文字}}打印作爲一個字符串