У меня есть строка, возвращаемая одному из моих представлений, например:
$text = '<p><strong>Lorem</strong> ipsum dolor <img src="images/test.jpg"></p>'
Я пытаюсь отобразить его с помощью Blade:
{{$text}}
Однако вывод представляет собой необработанную строку вместо отображаемого HTML. Как отобразить HTML с Blade в Laravel 5?
PS. PHP echo()
отображает HTML правильно.
Вам нужно использовать
{!! $text !!}
Строка автоматически исчезнет при использовании {{ $text }}
.
Вы можете попробовать это:
{!! $text !!}
Вы должны взглянуть на: http://laravel.com/docs/5.0/upgrade#upgrade-5.0
Пожалуйста, используйте
{!! $test !!}
Только в случае HTML, в то время как если вы хотите визуализировать данные, используйте sting и т.д.
{{ $test }}
Это потому, что когда ваш блейд файл скомпилирован
{{ $test }}
преобразуется в <?php echo e($test)?>
{!! $test !!}
{!! $test !!}
преобразуется в <?php echo $test?>
Попробуйте это. Это сработало для меня.
{{ html_entity_decode($text) }}
В шаблоне Blade Laravel, {{}} wil escape html. Если вы хотите отобразить html из контроллера в поле зрения, декодируйте html из строки.
Есть и другой способ. Если целью объекта является рендеринг html, вы можете реализовать контракт \Illuminate\Contracts\Support\Htmlable
, который имеет метод toHtml()
.
Затем вы можете визуализировать этот объект из лезвия следующим образом: {{ $someObject }}
(обратите внимание, нет необходимости в синтаксисе {!! !!}
).
Также, если вы хотите вернуть свойство html, и знаете, что это будет html, используйте класс \Illuminate\Support\HtmlString
следующим образом:
public function getProductDescription()
{
return new HtmlString($this->description);
}
а затем используйте его как {{ $product->getProductDescription() }}
.
Конечно, ответьте, когда напрямую передаете raw html на странице.
Ты можешь использовать {!! $ text !!} для рендеринга HTML-кода в Laravel
{!! $text !!}
Если вы используете
{{ $text }}
Он не будет отображать HTML-код и печатать в виде строки.
Используйте {!! $text !!}
{!! $text !!}
для отображения данных без экранирования. Просто убедитесь, что вы не делаете это с данными, которые пришли от пользователя и не были очищены.
Вы можете сделать много способов в Laravel 5..
{!! $text !!}
{!! html_entity_decode($text) !!}
Это отлично работает для Laravel 5.6
<?php echo "$text"; ?>
По-другому
{!! $text !!}
Он не будет отображать HTML-код и печатать в виде строки.
Для более подробной информации откройте ссылку: - Показать HTML с Blade
Если вы хотите избежать использования данных
{{ $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 для параметров этой функции
Попробуйте это, это сработало
@php echo $ text; @endphp
Вы можете сделать это, используя три способа: сначала используйте условие, как показано ниже
{!! $text !!}
Второй путь
<td class="nowrap">
@if( $order->status == '0' )
<button class="btn btn-danger">Inactive</button>
@else
<button class="btn btn-success">Active</button>
@endif
</td>
Третий и правильный способ использования троичного оператора на лезвии
<td class="nowrap">
{!! $order->status=='0' ?
'<button class="btn btn-danger">Inactive</button> :
'<button class="btn btn-success">Active</button> !!}
</td>
Я надеюсь, что третий способ идеально подходит для подержанных троичного оператора на лезвии.
Я был там, и это была моя вина. И очень глупый.
Если вы забыли расширение .blade в имени файла, этот файл не понимает blade-сервер, но запускает php-код. Вы должны использовать
/resources/views/filename.blade.php
вместо
/resources/views/filename.php
надеюсь, это поможет кому-то
Для тех, кто использует tinymce и разметку внутри textarea:
{{ htmlspecialchars($text) }}
это просто
{!! $text !!}
Компиляция laravel как элемент dom и печать {{$text}}
в виде строки
В PHP Laravel для отображения $test
data на HTML-странице:
{{ $test }}
По-другому
<?PHP $test ?>
$= данные пользователя:: где ( 'ID', 1) → первый();
На странице клика
Имя: {{$ data- > name}}
Hello, {!! $name !!}.
» Laravel.com/docs/5.5/blade# отображение данных,