控制回路内的逃生场



SilverStripe的新手,并试图解密事情是如何工作的。

我在页面中有一个字段,用于存储一些HTML代码。当您查看他们的"持有人"页面时,它会循环访问每个子页面并显示所有子页面。我遇到的问题是,当我输出值时,它会转义它 - 所以我需要能够解码它。

<% control Children %>
    <h2>$Title </h2>
    $ExtraHtmlBody <!-- This is escaping when outputting -->
 <% end_control %>

所以我尝试在我的Page_Controller中添加一个函数,但似乎我无法从 Control 循环内部调用Page_Controller方法。我尝试将该函数移动到Page类中,但它似乎没有任何$this->ExtraHtmlBody的数据。也许我做错了什么。

您的数据可能已在数据库本身中转义。 你检查了吗?

就像@munomono说的,如果你存储html,请使用HTMLTextHTMLVarchar。您也可以尝试使用 $ExtraHtmlBody.RAW 在模板中禁用自动转义(风险自负)。

一些信息在这里:

  • http://doc.silverstripe.org/framework/en/topics/data-types#casting-html-text
  • http://doc.silverstripe.org/framework/en/topics/security#what-if-i-can-t-trust-my-editors
  • http://doc.silverstripe.org/framework/en/reference/templates#formatting-and-casting

您的控制器功能问题可能只是一个范围问题,因为<% loop %>更改范围,$Up/$Top可能会有所帮助。但无论如何,您可能不需要该功能。

最新更新