Может быть, это простая вещь, которую я пропустил, но в моем шаблоне ларавельного лезвия у меня есть что-то вроде:
{{ Form::model(....) }} ... my fields ... {{ Form::close() }}
Это приводит к экранированному HTML, поэтому тег формы фактически печатается на экране. Однако, если я это сделаю:
{!! Form::model(....) !!} ... my fields ... {!! Form::close() !!}
он работает так, как ожидалось. Всегда ли мне нужно использовать {!! ... !!} {!! ... !!} при выводе html? Все обучающие материалы, которые я прочитал, просто показывают, используя обычное соглашение {{ Form::model(...) }} чтобы открыть форму. Спасибо за любой совет! Использование Laravel 5 fwiw.
Это верно.
{{ ... }} для raw html
{{{ ... }}} для экранирования с помощью htmlentities()
{!! ... !!} {!! ... !!} для 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 !!} : Экранированные теги.
Лезвие – это волшебство!