РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
67 of 1392 menu

Директива отмены экранирования

, она не экранирует спецсимволы, что позволяет вставлять в шаблон сырой HTML-код.}}

Директива {!! !!} применяется в шаблонах Blade для вывода неэкранированного HTML-кода. В отличие от стандартного вывода через {{ }}, который экранирует все HTML-теги, директива {!! !!} выводит строку без изменений, позволяя браузеру интерпретировать её как HTML-разметку. Это особенно полезно при выводе контента, который уже содержит HTML-теги, например, текст из редактора или сгенерированную разметку.

Важно использовать данную директиву только с проверенными данными, чтобы избежать XSS-атак. Для экранирования вывода следует использовать {{ }}, а {!! !!} - только когда требуется отобразить именно HTML-разметку.

Синтаксис

{!! $htmlContent !!}

Пример

Давайте выведем простой HTML-код, переданный из контроллера:

<?php namespace AppHttpControllers; use IlluminateHttpRequest; class PageController extends Controller { public function index() { $html = '<h1>Hello</h1><p>This is a paragraph</p>'; return view('page', ['html' => $html]); } }
<div> {!! $html !!} </div>

Результат выполнения кода:

<div> <h1>Hello</h1> <p>This is a paragraph</p> </div>

Пример

Сравним вывод с экранированием и без. В первом случае используем стандартный вывод, во втором - директиву {!! !!}:

<?php namespace AppHttpControllers; use IlluminateHttpRequest; class PageController extends Controller { public function index() { $text = '<strong>important</strong> text'; return view('page', ['text' => $text]); } }
<div> <p>Escaped: {{ $text }}</p> <p>Unescaped: {!! $text !!}</p> </div>

Результат выполнения кода:

<div> <p>Escaped: <strong>important</strong> text</p> <p>Unescaped: <strong>important</strong> text</p> </div>

Пример

Выведем список статей, где заголовки обёрнуты в HTML-теги. Такой подход удобен, когда данные приходят из базы данных уже с разметкой:

<?php namespace AppHttpControllers; use AppModelsArticle; use IlluminateHttpRequest; class ArticleController extends Controller { public function index() { $articles = Article::select('title_html')->get(); return view('articles', ['articles' => $articles]); } }
<ul> @foreach ($articles as $article) <li> {!! $article->title_html !!} </li> @endforeach </ul>

Результат выполнения кода:

<ul> <li> <h2>First article</h2> </li> <li> <h2>Second article</h2> </li> <li> <h2>Third article</h2> </li> </ul>

Смотрите также

  • директива {{ }},
    которая экранирует вывод
  • директива @verbatim,
    которая отключает обработку Blade-конструкций
  • директива @php,
    которая позволяет выполнять PHP-код в шаблонах
  • директива @dd,
    которая выводит дамп и останавливает выполнение
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить