我正在使用Laravel 5.3开发一个博客。在添加帖子页面中,我使用CKEDITOR和Code Snippet Plugin。在这方面一切都很好。插件在textarea字段中添加的代码也会突出显示。
在目标页面中我添加了:
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.8.0/styles/default.min.css">
在页面的标题部分。
和
<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.8.0/highlight.min.js"></script>
<script>hljs.initHighlightingOnLoad();</script>
在页面的页脚部分。
该页面从数据库收到以下html代码。
<p>The place for Laravel Blade Template.</p>
<pre>
<code class="language-html"><div><h1>
This is a Header</h1></div></code></pre>
<p> </p>
这显示是这样的。
<p>The place for Laravel Blade Template.</p> <pre>
<code class="language-html"><div><h1>This is a Header</h1></div></code>
</pre> <p> </p>
因此代码部分不会突出显示。
我怎样才能做到这一点。我错了什么?我需要帮助。
在Laravel 5中输出非转义的HTML,你必须使用{!! !!}
一个例子:
{!!$myDatabaseHtml!!}
问题是,整个HTML代码都被转义,因此浏览器不会解释它。
你想要的是只有<code class="language-html">...</code>
之间的内容被转义,以便浏览器正确呈现代码容器,并且highlight.js可以挂钩到DOM对象。