php - 如何在 silverstripe 的 SiteConfig 中设置属性?
问题描述
我使用本指南在 silverstripe 中创建了一个 CustomSiteConfig -> https://docs.silverstripe.org/en/4/developer_guides/configuration/siteconfig/#siteconfig
这是它的样子:
<?php
namespace Poptin\Silverstripe;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\TextField;
use SilverStripe\ORM\DataExtension;
class PoptinSiteConfig extends DataExtension
{
private static $db = [
'PoptinConfig' => 'Text'
];
public function updateCMSFields(FieldList $fields)
{
$fields->addFieldToTab("Root.Main",
new TextField("PoptinConfig", "Poptin Config")
);
}
}
我可以通过这样做来检索信息
$config = SiteConfig::current_site_config();
var_dump($config->PoptinConfig);
它有效,但如何将其设置回来?我试过了$config->__set('PoptinConfig', 'foo')
,$config->setField('PoptinConfig', 'foo');
但它们都不起作用。没有错误,但该字段没有改变。
解决方案
$cfg = SiteConfig::current_site_config();
$cfg->PoptinConfig = "Something";
$cfg->write();
应该做到这一点,就像在任何扩展 DataObject 的类上一样。唯一的区别是
$cfg = SiteConfig::current_site_config();
因为它是一个 SiteConfig 方法。
推荐阅读
- catia - 通过 CAA 打开 CATPart 并提取特征
- c# - 通过一个角度和轴的给定方向矢量旋转矢量,并且有一个轴的点。(3 个维度)
- css - Ctrl + / 在 SCSS/SASS 文件中无法在 Visual Studio 2017 中注释代码
- unity3d - Unity PhotonView 是我的检查
- r - 从两个数据框的列中匹配和提取值
- wpf - 如何让这个 drop overlay 的淡入动画效果很好?
- typescript - 如何强制使用 ts-jest 执行的测试在另一个文件夹中使用 node_modules?
- python - 如何制作 Python 脚本直接打印标准输出?
- php - 在 react native 的 TextInput 中获取 json 数据
- datetime - 电子表格中的公式根据现有的相邻值(或缺少)计算累积假期