我在Laravel中建立了一个小型CMS,并试图显示其内容(存储在数据库中)。 它显示的是HTML标记,而不是执行它们。 就像所有打印数据都有自动html_entity_decode一样。
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标记,而不是转义它们。
在最新版本的ver-5.0 {{...}}和{{{...}}}中都执行此操作,那么您究竟拥有什么版本?
即时通讯使用版本4.2
然后我不确定为什么{{...}}给出了转义结果!
在v-5中,将{!! !!}用于常规输出(不带esc)。
它们是否存储为"标签"或已在数据库中转义? 因为否则我会像Alpha那样看待它,这仅在laravel v5中是这种情况
这是我在问我的问题之前检查的第一件事,是的,它们通常存储在sql表中
@ Dr.Neo Ive修改了我的答案。 也许会对您有帮助
{!! !!}语法肯定在Laravel 5中对我有用。
将语法从{{ }}更改为{!! !!}。
正如Alpha在上面的评论(不是答案,所以我想我要发表)中说的那样,在Laravel 5中,{{ }}(以前是非转义的输出语法)已更改为{!! !!}。将{{ }}替换为{!! !!},它应该可以工作。
解决我的情况!
像魔术一样工作。 谢谢!! 虽然我不知道为什么html_entity_decode无法正常工作。
使用此标签{!!说明文字!}
这个答案在Laravel 5.2中对我有用。 在解决该问题的过程中,我还发现,如果您不使用以下语法,则Illuminate / Support / helpers.php :: 529将运行htmlentities():{!! !!}。
将内容包括在{! !}。
我遇到过同样的问题。感谢您以上的回答,我解决了我的问题。如果有人面临相同的问题,可以通过以下两种方法解决此问题:
您可以使用{!! $news->body !!}
您可以使用传统的php开放(不推荐),例如:
希望对您有所帮助。
在刀片模板中显示HTML代码没有问题。
为了进行测试,您只能将一条路由添加到routes.php:
Route::get('/', function () {
$data = new stdClass();
$data->page_desc
= 'aaabbb
New paragaph
return View::make('hello')->with('content', $data);
}
);
并在hello.blade.php文件中:
{{ $content->page_desc }}
对于以下代码,您将获得与图像一样的输出
因此,您的情况下page_desc可能不是您期望的。但是如您所见,如果有人使用'`标签,则可能存在潜在的危险,因此您可能应该在分配给刀片模板过滤器之前使用某些标签
编辑
我还通过将相同的代码放入数据库中进行了测试:
Route::get('/', function () {
$data = User::where('id','=',1)->first();
return View::make('hello')->with('content', $data);
}
);
在这种情况下,输出完全相同
编辑2
我也不知道Pages是您的模型还是供应商模型。例如,它可以在内部具有访问器:
public function getPageDescAttribute($value)
{
return htmlspecialchars($value);
}
然后当您获得page_desc属性时,将使用htmlspecialchars修改page_desc。因此,如果您确定数据库中的数据包含原始html(未转义),则应查看此Pages类
现在测试谢谢
{{html_entity_decode($ post-> content())}}使用Laravel 4.0为我解决了这个问题。现在,我的HTML内容已得到应有的解释。
是的,该解决方案实际上适用于laravel 4-也许有人知道L4的更好解决方案?
由于我们使用的是laravel,因此我们应该使用{!! !!}遵循Laravel语法。