다음과 같이 내보기 중 하나에 문자열이 반환되었습니다.
$text = '<p><strong>Lorem</strong> ipsum dolor <img src="images/test.jpg"></p>'
Blade로 표시하려고합니다.
{{$text}}
그러나 출력은 렌더링 된 HTML 대신 원시 문자열입니다. Laravel 5에서 블레이드로 HTML을 표시하려면 어떻게합니까?
추신. PHP echo()
가 HTML을 올바르게 표시합니다.
답변
당신은 사용해야합니다
{!! $text !!}
사용하면 문자열이 자동 이스케이프됩니다 {{ $text }}
.
답변
답변
답변
사용하십시오
{!! $test !!}
데이터, 찌르기 등을 렌더링하려는 경우 HTML의 경우에만
{{ $test }}
블레이드 파일을 컴파일 할 때
{{ $test }}
<?php echo e($test) ?>
동안 으로 변환됩니다
{!! $test !!}
로 변환 <?php echo $test ?>
답변
다른 방법이 있습니다. 객체 목적이 html을 렌더링하는 것이라면 메소드 \Illuminate\Contracts\Support\Htmlable
가있는 계약을 구현할 수 있습니다 toHtml()
.
그런 다음 블레이드에서 해당 객체를 다음과 같이 렌더링 할 수 있습니다 {{ $someObject }}
( {!! !!}
구문이 필요 없음 ).
또한 html 속성을 반환하고 html 속성을 알고 \Illuminate\Support\HtmlString
싶다면 다음과 같이 클래스를 사용 하십시오.
public function getProductDescription()
{
return new HtmlString($this->description);
}
그런 다음처럼 사용하십시오 {{ $product->getProductDescription() }}
.
물론 페이지에 원시 HTML을 직접 렌더링 할 때는 책임을 져야합니다.
답변
이 시도. 그것은 나를 위해 일했다.
{{ html_entity_decode($text) }}
Laravel Blade 템플릿에서 {{}}은 html을 이스케이프합니다. 컨트롤러에서 HTML을 표시하려면 문자열에서 HTML을 디코딩하십시오.
답변
당신이 사용할 수있는 {!! Laravel에서 HTML 코드를 렌더링하기위한 $ text !!}
{!! $text !!}
당신이 사용하는 경우
{{ $text }}
HTML 코드를 렌더링하지 않고 문자열로 인쇄합니다.