Может быть, это простая вещь, которую я пропустил, но в моем шаблоне ларавельного лезвия у меня есть что-то вроде:
{{ 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 !!}
: Экранированные теги.
Лезвие – это волшебство!