В чем разница между {{ }} и {!!!!} в файлах лезвий laravel?

В фреймворке laravel мы можем использовать blade-сервер для добавления кода PHP в HTML-файл.
Мы используем оба {{ }} а также {!! !!} синтаксис в блейд-файлах Laravel.
В чем разница между ними?

6 ответов

Решение

Операторы Blade {{ }} автоматически отправляются через функцию htmlentities в PHP, чтобы предотвратить атаки XSS.

Если вы передаете данные из вашего контроллера в представление с некоторыми стилями HTML, такими как:

$first = "<b>Narendra Sisodia</b>";

И это доступно, в пределах лезвия, с {{ $first }} тогда вывод будет:

<b>Narendra Sisodia</b>

Но если он доступен с {!! $first !!} тогда вывод будет:

Нарендра Сисодия

Если вы не хотите, чтобы данные были экранированы, используйте {!! !!} еще использовать {{ }},

Чтобы избежать использования данных

{{ $data }}

Если вы не хотите экранировать данные, используйте ниже

{!! $data !!}

из документации: https://laravel.com/docs/5.1/blade

По умолчанию Blade {{ }} операторы автоматически отправляются через функцию htmlentities в PHP, чтобы предотвратить атаки XSS. Если вы не хотите, чтобы ваши данные были экранированы, вы можете использовать следующий синтаксис:

Hello, {!! $name !!}.

Операторы Blade {{ }} автоматически отправляются через функцию htmlentities в PHP, чтобы предотвратить атаки XSS.

Вы можете увидеть больше здесь: https://laravel.com/docs/master/blade

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

Например: у меня есть$status = '<b>Active Status</b>';переменная, которая хранит содержимое HTML в виде данных.

Теперь, если я напишу эти данные как{{ $status }}Затем он вернется какplain text.

Ожидаемый результат:

      <b>Active Status</b>

Но если я напишу эти данные как{!! $status !!}тогда он вернется какHTMLкод.

Ожидаемый результат:

       
Другие вопросы по тегам