Laravel 5 Form :: model (…) экранирован по умолчанию?

Может быть, это простая вещь, которую я пропустил, но в моем шаблоне ларавельного лезвия у меня есть что-то вроде:

{{ Form::model(....) }} ... my fields ... {{ Form::close() }} 

Это приводит к экранированному HTML, поэтому тег формы фактически печатается на экране. Однако, если я это сделаю:

 {!! Form::model(....) !!} ... my fields ... {!! Form::close() !!} 

он работает так, как ожидалось. Всегда ли мне нужно использовать {!! ... !!} {!! ... !!} при выводе html? Все обучающие материалы, которые я прочитал, просто показывают, используя обычное соглашение {{ Form::model(...) }} чтобы открыть форму. Спасибо за любой совет! Использование Laravel 5 fwiw.

Это верно.

Laravel 4

{{ ... }} для raw html
{{{ ... }}} для экранирования с помощью htmlentities()

Laravel 5

{!! ... !!} {!! ... !!} для raw html
{{{ ... }}} для явно экранированного содержимого
{{ ... }} для поведения по умолчанию (которое также экранируется)


Если вам это не нравится, вы можете изменить все эти теги этими способами:

 Blade::setRawTags($openTag, $closeTag); Blade::setContentTags($openTag, $closeTag); Blade::setEscapedContentTags($openTag, $closeTag); 

Чтобы восстановить способ обработки Laravel 4, вы можете сделать это:

 Blade::setRawTags('{{', '}}'); Blade::setEscapedContentTags('{{{', '}}}'); 

Раньше {{{ text }}} было экранировано, а {{{ text }}} было экранировано, но это изменилось с помощью Laravel 5. Теперь это {{ text }} для экранированного, и {!! text !!} {!! text !!} для unescaped. Так что да, вы всегда будете нуждаться в последнем для HTML в Laravel 5.

Скорее всего, все обучающие материалы, которые вы прочитали, используют более старую версию. Я буду первым, кто признает, что это может быть немного запутанным. Я еще не привык к этому. 🙂

Для справки: http://laravel.com/docs/5.0/templates – Laravel 5 http://laravel.com/docs/4.2/templates – Laravel 4

Laravel4.x: {{{ text }}} : теги контента, @{{ text }} : исходные теги, {{ text }} : экранированные теги / по умолчанию.

Laravel5.x: {{ text }} : теги контента, @{{ text }} : сырые теги, {!! text !!} {!! text !!} : Экранированные теги.

Лезвие – это волшебство!