Php Silverstripe将数据对象添加到Siteconfig
我正在尝试将dataobject添加到站点配置设置中。 我已经设法添加了一个标志领域,这项工作现在我想添加一些重复领域,如社会媒体领域。这不管用。我犯了一个错误 下面是代码和错误。我查看了数据库,所有字段都是在dev/build之后创建的。 我也有同花顺=全部 mysite/_config/app.ymlPhp Silverstripe将数据对象添加到Siteconfig,php,silverstripe,Php,Silverstripe,我正在尝试将dataobject添加到站点配置设置中。 我已经设法添加了一个标志领域,这项工作现在我想添加一些重复领域,如社会媒体领域。这不管用。我犯了一个错误 下面是代码和错误。我查看了数据库,所有字段都是在dev/build之后创建的。 我也有同花顺=全部 mysite/_config/app.yml SiteConfig: extensions: - CustomSiteConfig mysite/code/extensions/CustomSiteConfig.php mysi
SiteConfig:
extensions:
- CustomSiteConfig
mysite/code/extensions/CustomSiteConfig.php
mysite/code/extensions/SocialMedia.php
class SocialMedia extends DataObject {
public static $db = array(
'SortID' => 'Int',
'Social' => 'Text',
'Icon' => 'Text',
'URL' => 'Text'
);
public static $has_one = array(
'CustomSiteConfig' => 'CustomSiteConfig'
);
public function getCMSFields() {
return new FieldList(
new TextField('Social'),
new TextField('Icon'),
new TextField('URL')
);
}
}
错误消息
Fatal error: Call to undefined method CustomSiteConfig::SocialMedia() in file/path/mysite/code/extensions/CustomSiteConfig.php on line 34
第34行是
$gridField = new GridField("SocialMedia", "SocialMedia", $this->SocialMedia(), $gridFieldConfig);
在decorator/DataExtension上,应该使用$this->owner,而不仅仅是$this。第34行应该是这样的:
$gridField = new GridField("SocialMedia", "SocialMedia", $this->owner->SocialMedia(), $gridFieldConfig);
另见:
$gridField = new GridField("SocialMedia", "SocialMedia", $this->owner->SocialMedia(), $gridFieldConfig);