im строя небольшую CMS в laravel, и каждый я попытался показать содержимое, которое хранится в БД, оно показывает HTML-теги, а не выполняет их как, например, есть auto html_entity_decode для всех печатных данных
<?php class CmsController extends BaseController{ public function Content($name){ $data = Pages::where('CID','=',Config::get('company.CID'))->where('page_name','=',$name)->first(); return View::make('cms.page')->with('content', $data); } } ?>
я попытался распечатать содержимое, используя фигурные скобки
{{$content->page_desc}}
и тройная фигурная скобка
{{{$content->page_desc}}}
и они дают тот же результат
Мне нужно выполнить те теги HTML вместо того, чтобы их экранировать
Измените свой синтаксис с {{ }}
на {!! !!}
{!! !!}
.
Как сказал Альфа в комментарии выше (не ответ, поэтому я думал, что я опубликую), в Laravel 5, {{ }}
(ранее неэксклюзивный выходной синтаксис) был изменен на {!! !!}
{!! !!}
. Замените {{ }}
на {!! !!}
{!! !!}
и он должен работать.
используйте этот тег {!! текст описания !!}
Включить контент в {! !}.
Нет проблем с отображением HTML-кода в шаблонах клинков.
Для теста вы можете добавить route.php только один маршрут:
Route::get('/', function () { $data = new stdClass(); $data->page_desc = '<strong>aaa</strong><em>bbb</em> <p>New paragaph</p><script>alert("Hello");</script>'; return View::make('hello')->with('content', $data); } );
и в файле hello.blade.php
:
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> </head> <body> {{ $content->page_desc }} </body> </html>
Для следующего кода вы получите результат как на изображении
Так что, вероятно, page_desc
в вашем случае не то, что вы ожидаете. Но, как вы видите, это может быть потенциально опасно, если кто-то использует, например, «тег», чтобы вы, вероятно, на своем маршруте, прежде чем назначать фильтру шаблона клинка, некоторые теги
РЕДАКТИРОВАТЬ
Я также проверил его, поставив тот же код в базу данных:
Route::get('/', function () { $data = User::where('id','=',1)->first(); return View::make('hello')->with('content', $data); } );
Результат в этом случае точно такой же
Edit2
Я также не знаю, является ли ваша модель вашей моделью или моделью поставщика. Например, он может иметь доступ внутрь:
public function getPageDescAttribute($value) { return htmlspecialchars($value); }
а затем, когда вы получите атрибут page_desc
вы получите измененный page_desc
с помощью htmlspecialchars
. Поэтому, если вы уверены, что данные в базе данных с raw html (не экранированы), вы должны посмотреть на этот класс Pages
Я была такая же проблема. Спасибо за ответы выше, я решил свою проблему. Если есть люди, столкнувшиеся с одной и той же проблемой, вот два способа решить эту проблему:
{!! $news->body !!}
{!! $news->body !!}
<?php echo $string ?>
Я надеюсь, что это помогает.
{{html_entity_decode ($ post-> content ())}} сохранил проблему для меня с Laravel 4.0. Теперь мой HTML-контент интерпретируется так, как должен.