Uncaught BadMethodCallException: Object -> __ call (): метод 'Slides' не существует на 'Page' - PullRequest
0 голосов
/ 29 января 2019

У меня проблемы с поиском решения для этого.Вот мой код:

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'

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

я нашел решение.Структура кода файлов * .yml, плохо организованных с такими ошибками, может возникнуть.например,

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

пробел должен быть включен перед расширениями: (код выше)

0 голосов
/ 29 января 2019

Ваш кеш конфигурации устарел.Добавьте ?flush к URL-адресу вашего веб-браузера, чтобы очистить его.

Конфигурация кэшей SilverStripe в командной строке и в браузере.Если вы изменяете частное статическое свойство (например, $many_many и $many_many_extraFields в этом примере), вам необходимо очистить кеш конфигурации, чтобы его можно было соблюдать.

С устаревшим кешем иВ новом отношении ORM вы получаете эту ошибку, потому что SilverStripe не знает об этом отношении, чтобы обеспечить магический метод для доступа к нему ($this->Slides()).

...