【问题标题】:Laravel CKEditor Saves to DB but HTML does not render on pageLaravel CKEditor 保存到 DB 但 HTML 不在页面上呈现
【发布时间】:2017-05-11 23:21:14
【问题描述】:

在我的项目视图中,我为 details 启用了 CKEditor。一切正常,因为我可以创建一个新项目并将其保存到数据库中。当我查看 details 列中的项目表时,我看到了我的 html <p>This is some details</p>。当我尝试在视图中显示 $project->details 时,它不会呈现 HTML,而只会打印到屏幕上的 <p>This is some details</p>

As this answer suggests 从我的刀片文件中我尝试了{{ html_entity_decode($project->details) }},它做同样的事情(不从数据库渲染 html)。我相信这是特定于 Laravel 以及它如何获取/存储数据的,因为我之前在 Codeigniter 中有这个项目,并且能够简单地将值回显到屏幕上。

当我使用时 {{ html_entity_decode($project->details) }}我明白了:

这将呈现 HTML,但我认为这不是我应该这样做的方式,它会在 HTML 之后打印一个数字(在本例中为 1)。 {{ print($project->details) }}

这是我使用时发生的情况(注意底部的随机 1) {{ $project->details }}

这是我的数据库表

如何让 html 在页面上呈现/在 laravel 或 php 中打印是最好的方法?

【问题讨论】:

  • 打印出确切的结果会让其他人更容易理解确切的问题。
  • 当我在我看来使用{{ html_entity_decode($project->details) }} 时,它会打印<p>This is some details</p>。当我使用{{ print($project->details) }} 时,它会打印This is some details 1。在details 列的projects 表中,我看到<p>This is some details</p>。我会尝试添加一些屏幕截图,看看它是否使问题更清楚。

标签: php laravel laravel-5


【解决方案1】:

没有理由显示“1”。你能确保你的模型上没有任何 Mutators。

此外,如果您非常确定来自数据库的所有数据并希望按原样输出 html,您可以尝试 {!! $project->details !!}

【讨论】:

  • {!! $project->details !!} 成功了。你能告诉我使用{{ $project->details }}{!! $project->details !!}有什么区别吗?
  • 输出变量使用:{{ $variableName }} 在实际显示变量的值之前执行转义字符串方法以避免XSS Attacks 并将任何类型的脚本注入您的页面,特别是如果该变量的值是从面向公众的输入中设置的。使用 {!! !!} 就像告诉刀片不要转义任何类型的脚本(包括 html 标签),并且只有在您确定 100% 变量的值没有任何恶意脚本时才应该使用。
猜你喜欢
  • 2023-02-23
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-03
  • 2017-05-25
相关资源
最近更新 更多