未捕获BadMethodCallException:对象 - > __呼叫():该方法“幻灯片”不上“页”存在

问题描述 投票:2回答:2

我无法找到一个解决方案。这里是我的代码:

class Page extends SiteTree
{
    private static $many_many = [
        'Slides' => SliderImage::class,
    ];

    private static $many_many_extraFields = [
        'Slides' => ['SlideSort' => 'Int'],
    ];

    private static $table_name = 'Page';

    public function getCMSFields() {
        $fields = parent::getCMSFields();
        $fields->addFieldToTab(
            'Root.Gallery',
            $grid = GridField::create(
                'Slides',
                'Slides',
                $this->Slides(),
                GridFieldConfig_RelationEditor::create()
                    ->addComponent(GridFieldOrderableRows::create('SlideSort'))
            )
        );
        return $fields;
    }

}

我得到这个错误:[Emergency] Uncaught BadMethodCallException: Object->__call(): the method 'Slides' does not exist on 'Page'

php silverstripe
2个回答
1
投票

你的配置缓存是过时的。 ?flush添加到您的web浏览器URL将其清除。

SilverStripe同时在命令行和浏览器高速缓存配置。如果你正在修改一个私人静态属性(如在这个例子中$many_many$many_many_extraFields),那么你需要清空配置缓存,以便它得到尊重。

随着过时的高速缓存和一个新的ORM的关系,你得到这个错误,因为SilverStripe不知道为了提供一个神奇的方法来访问它($this->Slides())之间的关系。


0
投票

我找到了解决办法。发生不能很好地组织这些错误可能是* .yml文件的代码结构。用于例如

SilverStripe\SiteConfig\SiteConfig:
  extensions:
    - SilverStripers\RC\Extensions\SiteConfigExtension

有一个空间必须扩展之前包括:(上面的代码)

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.