【问题标题】:Silverstripe - get SiteConfig value in WidgetSilverstripe - 在小部件中获取 SiteConfig 值
【发布时间】:2012-09-29 20:55:36
【问题描述】:

我正在尝试访问我的小部件类中的站点配置值:

<?php
class FacebookFeedWidget extends Widget{
    static $title = "";
    static $cmsTitle = "Facebook Feed Widget";
    static $description = "This widget shows the Facebook feed";
    static $doSiteConfig = DataObject::get_one('SiteConfig'); 

    static $db = array(
        "FacebookURL" => "Text"
    );

    static $defaults = array(
        "FacebookURL" => $doSiteConfig->FacebookURL
    );

    function getCMSFields(){
        return new FieldList(
            new TextField("FacebookURL", "Facebook URL")
        );
    }

    function getFacebookURL(){
        $output = new ArrayList();
        $output->push(
            new ArrayData(
                array(
                    "FacebookURL" => $this->FacebookURL
                )
            )
        );
        return $output;
    }
}

但是我得到一个错误: 解析错误:语法错误,第 8 行 /....../widgets_facebookFeed/FacebookFeedWidget.php 中出现意外的 '(',期望 ',' 或 ';'

我在这里做错了什么?

【问题讨论】:

    标签: silverstripe


    【解决方案1】:

    你不能这样做:

    static $defaults = array(
        "FacebookURL" => $doSiteConfig->FacebookURL
    );
    

    但幸运的是,有函数 polulateDefaults,它接受 $defaults 并将其设置为对象,因此我们可以挂钩:

    public function populateDefaults() {
        parent::populateDefaults();
        $this->FacebookURL = SiteConfig::current_site_config()->FacebookURL;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-08
      • 1970-01-01
      • 2012-05-20
      • 1970-01-01
      • 2021-09-29
      • 1970-01-01
      • 2020-04-02
      相关资源
      最近更新 更多