2015-03-25 29 views
117

Tôi có một chuỗi trở lại một trong những quan điểm của tôi, như thế này:Laravel 5: Hiển thị HTML với Blade

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

Tôi đang cố gắng để hiển thị nó với Blade:

{{$text}} 

Tuy nhiên, đầu ra là một chuỗi thô thay vì HTML được hiển thị. Làm thế nào để hiển thị HTML với Blade trong Laravel 5?

PS. PHP echo() hiển thị HTML chính xác.

Trả lời

300

bạn cần làm theo cách này

{!! $text !!} 

chuỗi sẽ tự động thoát khi bạn thực hiện {{}}

+3

tôi nghĩ rằng bạn nên chọn đây là câu trả lời. – apis17

+1

Đây là các tài liệu Laravel đề cập đến điều này: "Nếu bạn không muốn dữ liệu của mình được thoát, bạn có thể sử dụng cú pháp sau:' Xin chào, {!! $ name !!}. '" Https://laravel.com /docs/5.5/blade#displaying-data – Ryan

+0

Tôi thích nó, trực quan thực sự rõ ràng đây là một số khác với công cụ thông thường ... !!! – Andrew

24

Đối với laravel 5

{!!html_entity_decode($text)!!} 

đặn thông qua link này, xem RachidLaasri trả lời

+1

Thanks..its working .. {!! html_entity_decode ($ data) !!} –

+0

Đó là câu trả lời đúng !!! cảm ơn bạn –

5

Hãy thử điều này. Nó làm việc cho tôi.

{{ html_entity_decode($text) }} 

Trong mẫu Laravel Blade, {{}} wil escape html. Nếu bạn muốn hiển thị html từ bộ điều khiển trong chế độ xem, hãy giải mã html từ chuỗi.

6

Vui lòng sử dụng

{!! $test !!} 

Chỉ trong trường hợp HTML trong khi nếu bạn muốn để render dữ liệu, chích vv sử dụng

{{ $test }} 

Điều này là do khi tập tin lưỡi của bạn được biên dịch

{{ $test }} được chuyển đổi thành <?php echo e($test) ?> trong khi

{!! $test !!} được chuyển thành <?php echo $test ?>

3

Có một cách khác. Nếu mục đích đối tượng là hiển thị html, bạn có thể thực hiện hợp đồng \Illuminate\Contracts\Support\Htmlable có phương thức toHtml().

Sau đó, bạn có thể hiển thị đối tượng đó từ lưỡi như thế này: {{ $someObject }} (lưu ý, không cần cú pháp {!! !!}).

Ngoài ra nếu bạn muốn trả lại tài sản html và bạn biết điều đó sẽ html, sử dụng \Illuminate\Support\HtmlString lớp như thế này:

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

và sau đó sử dụng nó như {{ $product->getProductDescription() }}.

Tất nhiên phải chịu trách nhiệm khi trực tiếp hiển thị html thô trên trang.

1

Nếu bạn muốn thoát khỏi việc sử dụng dữ liệu

{{ $html }} 

Nếu không muốn thoát khỏi dữ liệu sử dụng

{!! $html !!} 

Nhưng đến Laravel-4, bạn có thể sử dụng

{{ HTML::link('/auth/logout', 'Sign Out', array('class' => 'btn btn-default btn-flat')) }} 

Khi đến Laravel-5

{!! HTML::link('/auth/logout', 'Sign Out', array('class' => 'btn btn-default btn-flat')) !!} 

Bạn cũng có thể làm điều này với các chức năng PHP

{{ html_entity_decode($data) }} 

đi qua các tài liệu PHP cho các tham số của hàm này

html_entity_decode - php.net

0

Trong Php Laravel để hiển thị $ dữ liệu thử nghiệm trong HTML trang: -

{{ $test }} 

theo cách khác

<? $test ?> 
-3

$ data = Người dùng :: where ('id', 1) -> first();

Trong trang lưỡi,

Tên: {{$ đĩa dữ liệu> name}}

0

Bạn có thể sử dụng {!! $ Text !!} để render HTML mã trong Laravel

{!! $text !!} 

Nếu bạn sử dụng

{{ $text }} 

Nó sẽ không làm cho mã HTML và in như một chuỗi.

0

của nó đơn giản

{!! $ Text !!}

laravel biên dịch là một yếu tố dom và {{$ text}} in như một chuỗi

Các vấn đề liên quan