首页 > 解决方案 > Phug PHP - 变量打印两次

问题描述

创建基于 mediawiki API 的 wiki 并遇到了一些问题。

我的代码有三个变量:

我在服务器上渲染这些变量在这里看到过:


$wikipage = $pug->render('views/wiki.pug', array(
        'title' => htmlspecialchars($wiki),
        'content' => $output,
        'edit' => $edit
    ));
echo $wikipage;

$输出是:

<h3> Riverside Rocks API Documentation </h3>
<p>Welcome to the Riverside Rocks API docs!</p>
<p>Base URL: https://riverside.rocks</p>
<p>(HTTPS is required)</p>
<h5> Getting your API key </h5>
<p><a href="https://riverside.rocks/account/login?_ref=wiki" class="external">Sign in to Riverside Rocks</a>. Open your browser's developer tools and run console.log(key);</p>
<p><b>Chat API</b></p>
<p>Endpoint: /v1/new Type: GET</p>
<p>Parameters:</p>
<ul>
<li> key</li>
<li> m (message)</li>
<li> c_id (channel name)</li>
</ul>
<p>Example:</p>
<p>https://example.com/v1/new?m=Hello!&c_id=general&key=12345</p>

$title 是:

API

$编辑是:

https://example.com/index.php?title=API&action=edit

我的 pug 模板文件像这样打印这些变量:

include head.pug
h1 #{title} - Wiki

#{content}
br
a(href=edit target="_blank") Edit this page

一切正常,除了内容变量被打印两次的页面。我做了一些调试,发现这是 Pug 的一个问题,因为当我在我的 PHP 服务器文件中打印变量时,它返回了打印一次的预期值。关于我可以做些什么来解决这个问题的任何想法?我用来将 PugJs 移植到 PHP 的包是“Phug”

标签: phppug

解决方案


你看到的是#{content}哪个是动态标签:

- content = 'div'
#{content} Foo

(在 Phug 或 Pug.js 中相同)

呈现:

<div>Foo</div>

要将变量作为原始 HTML 内容插入,您只需要:

!=content

或者首先是一个文本节点:

| !{content}

htmlspecialchars请注意,如果您已经在模板中转义,则不应使用:| #{content}已转义,| !{content}显示为原始,=content已转义,!=content为原始。


推荐阅读