我正在Laravel中构建一个小型CMS,我试图显示内容(存储在DB中)。它显示HTML标签而不是执行它们。这就像有一个自动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标记而不是转义它们。
7条答案
按热度按时间guykilcj1#
将语法从
{{ }}
更改为{!! !!}
。正如The Alpha在上面的评论中所说(不是一个答案,所以我想我会发布),在Laravel 5中,
{{ }}
(以前的非转义输出语法)已经更改为{!! !!}
。将{{ }}
替换为{!! !!}
,它应该可以工作。y3bcpkx12#
使用此标签
{!! description text !!}
dohp0rv53#
我也有同样的问题。谢谢上面的回答,我解决了我的问题。如果有人遇到同样的问题,这里有两种方法可以解决:
{!! $news->body !!}
<?php echo $string ?>
希望能帮上忙。
uklbhaso4#
包含
{! <content> !}
中的内容。pb3s4cty5#
在刀片模板中显示HTML代码没有问题。
对于测试,你可以只在routes.php中添加一个路由:
在
hello.blade.php
文件中:对于下面的代码,您将获得作为on image的输出
因此,在您的情况下,
page_desc
可能不是您所期望的。但正如你所看到的,它可能是潜在的危险,如果有人使用例如''标签,所以你应该在你的路由之前,分配给刀片模板过滤器一些标签编辑
我还测试了它,将相同的代码放入数据库:
输出在本例中完全相同
编辑2
我也不知道
Pages
是你的型号还是供应商型号。例如,它可以在内部包含访问器:然后当你得到
page_desc
属性时,你会得到修改的page_desc
与htmlspecialchars
。因此,如果您确定数据库中的数据是原始html(未转义),则应该查看这个Pages
类3bygqnnd6#
这在Laravel 10中对我很有效
w7t8yxp57#
{{html_entity_decode($post->content())}}为我保存了这个问题与Laravel 4.0。现在我的HTML内容被解释为它应该。