gpt4 book ai didi

symfony - 在 CKeditor 中编辑 Twig 模板

转载 作者:行者123 更新时间:2023-12-02 08:32:05 25 4
gpt4 key购买 nike

我正在尝试允许管理员用户编辑电子邮件模板。这些模板在数据库中存储为 Twig那些。因此其中的变量设置为 {{ buy.number }} 并且有像

这样的循环
    {% if cart['shipping'] %}
{% for line in cart['shipping'] %}
<tr>
<td colspan="7">Shipping ({{ line['text'] }})</td>
<td>US${{ line['money'] }}</td>
</tr>
{% endfor %}
{% endif %}

下面是我可以重现此问题的模板之一:

        <html>
<body>
<h3>Order #{{ purchase.number }} was cancelled</h3>
<p>Order content:</p>
<table>
<tr>
<th>Line</th>
<th>Item #</th>
<th>Product Name</th>
<th>Shipping</th>
<th>UOM</th>
<th>Unit Price</th>
<th>Quantity</th>
<th>Subtotal</th>
</tr>
{% for line in cart['cart'] %}
<tr>
<td>{{ line['LineNo'] }}</td>
<td>{{ line['ItemNo'] }}</td>
<td>{{ line['ProductName'] }}</td>
<td>{{ line['Shipping'] }}</td>
<td>{{ line['UOM'] }}</td>
<td>US${{ line['UnitPrice'] }}</td>
<td>{{ line['Quantity'] }}</td>
<td>US${{ line['Subtotal'] }}</td>
</tr>
{% endfor %}
{% if cart['shipping'] %}
{% for line in cart['shipping'] %}
<tr>
<td colspan="7">Shipping ({{ line['text'] }})</td>
<td>US${{ line['money'] }}</td>
</tr>
{% endfor %}
{% endif %}
<tr>
<td colspan="7"><b>Order Item Total:</b></td>
<td>US${{ cart['total'] }}</td>
</tr>
</table>
</body>
</html>

当我刚刚打开一个包含此模板的 CKEditor 文本区域页面时,我对模板不做任何更改,只需单击“源”按钮,下面是上述模板的外观点击:

<h3>Order #{{ purchase.number }} was cancelled</h3>

<p>Order content:</p>
{% for line in cart[&#39;cart&#39;] %} {% endfor %} {% if cart[&#39;shipping&#39;] %} {% for line in cart[&#39;shipping&#39;] %} {% endfor %} {% endif %}

<table>
<tbody>
<tr>
<th>Line</th>
<th>Item #</th>
<th>Product Name</th>
<th>Shipping</th>
<th>UOM</th>
<th>Unit Price</th>
<th>Quantity</th>
<th>Subtotal</th>
</tr>
<tr>
<td>{{ line[&#39;LineNo&#39;] }}</td>
<td>{{ line[&#39;ItemNo&#39;] }}</td>
<td>{{ line[&#39;ProductName&#39;] }}</td>
<td>{{ line[&#39;Shipping&#39;] }}</td>
<td>{{ line[&#39;UOM&#39;] }}</td>
<td>US${{ line[&#39;UnitPrice&#39;] }}</td>
<td>{{ line[&#39;Quantity&#39;] }}</td>
<td>US${{ line[&#39;Subtotal&#39;] }}</td>
</tr>
<tr>
<td colspan="7">Shipping ({{ line[&#39;text&#39;] }})</td>
<td>US${{ line[&#39;money&#39;] }}</td>
</tr>
<tr>
<td colspan="7"><b>Order Item Total:</b></td>
<td>US${{ cart[&#39;total&#39;] }}</td>
</tr>
</tbody>
</table>

注意,不仅仅是单引号改变了html代码,最主要的是循环被移动了,所以以前是:

        {% if cart['shipping'] %}
{% for line in cart['shipping'] %}
<tr>

但变成:

{% for line in cart[&#39;cart&#39;] %} {% endfor %} {% if cart[&#39;shipping&#39;] %} {% for line in cart[&#39;shipping&#39;] %} {% endfor %} {% endif %}

如果这些实体不是 html 并且我不做任何更改,我什至不关注该字段,为什么 CKEditor 会更改源。

我尝试使用这些 CKEditor 配置选项:

CKEDITOR.config.enterMode = CKEDITOR.ENTER_BR;
CKEDITOR.config.entities = false;

CKEDITOR.config.forcePasteAsPlainText = false; // default so content won't be manipulated on load
CKEDITOR.config.basicEntities = true;
CKEDITOR.config.entities = true;
CKEDITOR.config.entities_latin = false;
CKEDITOR.config.entities_greek = false;
CKEDITOR.config.entities_processNumerical = false;
CKEDITOR.config.fillEmptyBlocks = function (element) {
return true; // DON'T DO ANYTHING!!!!!
};

但我仍然经历过这一点。除了不使用所见即所得之外,任何人都可以就配置选项或任何其他解决方法提供建议。我试图说服用户编辑 html/twig,但他们只想所见即所得。谢谢

最佳答案

对我来说,一个可能的解决方法是将 Twig block 添加到 config.protectedSource :

CKEDITOR.config.protectedSource.push(/\{%\s.+\s%\}/g);

它们将在所见即所得编辑器中被忽略,但在源代码 View 中仍然可见。

此外您还可以安装插件Show protected并且仍然有明显的提示。

关于symfony - 在 CKeditor 中编辑 Twig 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20977910/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com