gpt4 book ai didi

php - 是否可以在 Silverstripe 模板变量上运行一个函数来格式化输出?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:53:34 25 4
gpt4 key购买 nike

我创建了一个数据模型,其中包含办公室地址的纯文本输入字段。在我的相关 Silverstripe 模板中打印数据时,我想执行与 nl2br($OfficeAddr) 相同的操作。据我所知,他们的模板系统不支持此类功能。

我错过了什么吗?有任何推荐的解决方法吗?

最佳答案

在 Silverstripe 3 中,最好通过创建一个 DataExtension class 来实现。 (而不是覆盖类)。 (注意:这在 2.4.x 中也是可能的,但代码会大不相同。)

创建一个名为 TextFormatter 的新类,它扩展了 Extension:

class TextFormatter extends Extension { 
public function NL2BR() {
return nl2br($this->owner->value);
}
}

在配置中指定 Text 类应该使用您的全新类进行扩展。这可以在您的 _config.php 文件或(最好)在 YAML 文件中完成。

如果您还没有,请在 mysite/_config/extensions.yml 中创建一个包含以下内容的新文件(或者您可以将其附加到现有文件中):

Text:
extensions:
['TextFormatter']

这只是说“用 TextFormatter 类扩展 Text 类”,这将使我们的新 NL2BR 函数在所有 上可用文本对象。

现在,在您的模板中,您只需调用 $OfficeAddr.NL2BR,输出将在输出之前通过您的函数运行。

请注意,我假设您的模型使用 Text 作为字段类型,而不是像之前的答案所假设的那样使用 HTMLText。如果您正在使用 HTMLText,您可以通过适本地更改 extensions.yml 文件来简单地扩展该类。

关于php - 是否可以在 Silverstripe 模板变量上运行一个函数来格式化输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4917596/

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