Laravel 5: отображение HTML с помощью Blade
у меня есть строка, возвращенная к одному из моих представлений, например:
$text = '<p><strong>Lorem</strong> ipsum dolor <img src="images/test.jpg"></p>'
Я пытаюсь отобразить его с помощью Blade:
{{$text}}
тем не менее, вывод является необработанной строкой вместо отрисованного HTML. Как отобразить HTML с помощью Blade в Laravel 5?
PS. PHP echo() отображает HTML правильно.
14 ответов:
для laravel 5
{!!html_entity_decode($text)!!}разобрался через этот ссылке см. RachidLaasri ответ
вы можете попробовать это:
{!! $text !!}вы должны посмотреть на: http://laravel.com/docs/5.0/upgrade#upgrade-5.0
пожалуйста, используйте
{!! $test !!}только в случае с HTML, а если вы хотите представить данные, Стинг и т. д. используйте
{{ $test }}это потому, что когда ваш файл blade компилируется
{{ $test }}превращается в<?php echo e($test) ?>в то время как
{!! $test !!}превращается в<?php echo $test ?>
попробуйте это. Это сработало для меня.
{{ html_entity_decode($text) }}в шаблоне Laravel Blade, {{ }} Wil escape html. Если вы хотите отобразить html из контроллера в представлении, декодируйте html из строки.
есть и другой способ. Если целью объекта является рендеринг html, вы можете реализовать
\Illuminate\Contracts\Support\HtmlableконтрактаtoHtml()метод.затем вы можете отобразить этот объект из blade следующим образом:
{{ $someObject }}(обратите внимание, нет необходимости{!! !!}синтаксис).также, если вы хотите вернуть свойство html, и вы знаете, что это будет html, используйте
\Illuminate\Support\HtmlStringкласс такой:public function getProductDescription() { return new HtmlString($this->description); }и затем использовать его как
{{ $product->getProductDescription() }}.конечно будешь отвечать, когда непосредственно перевода исходный HTML-код на-страница.
Вы можете использовать {!! $текст !!} для рендеринга HTML кода в Laravel
{!! $text !!}Если вы используете
{{ $text }}он не будет отображать HTML-код и печатать в виде строки.
если вы хотите избежать использования данных
{{ $html }}если не хотите, чтобы избежать использования данных
{!! $html !!}но до Laravel-4 Вы можете использовать
{{ HTML::link('/auth/logout', 'Sign Out', array('class' => 'btn btn-default btn-flat')) }}когда доходит до Laravel-5
{!! HTML::link('/auth/logout', 'Sign Out', array('class' => 'btn btn-default btn-flat')) !!}вы также можете сделать это с помощью PHP-функции
{{ html_entity_decode($data) }}пройдите через PHP документ для параметров этой функции
использовать
{!! $text !!}для отображения данных, не экранируя его. Просто убедитесь, что вы не делаете этого с данными, которые пришли от пользователя и не были очищены.
это прекрасно работает для Laravel 5.6
<?php echo "$text"; ?>иначе
{!! $text !!}он не будет отображать HTML-код и печатать в виде строки.
для более подробной информации откройте ссылку:- отображение HTML с помощью Blade
Я был там, и это была моя вина. И очень глупый.
Если вы забыли .расширение blade в имени файла этот файл не понимает blade, но запускает php-код. Вы должны использовать
/resources/views/filename.blade.phpвместо
/resources/views/filename.phpнадеюсь, это поможет кому-то
Comments