Как поместить элементальное поле на вкладке в форме администратора CMS - PullRequest
0 голосов
/ 02 октября 2019

Начиная с Элементный модуль для Silverstripe 4, и по умолчанию он перечисляет Элементарные области на главной вкладке «Содержимое». Я хотел бы поместить их в их собственную вкладку.

Как мне это сделать в функции getCMSField класса моей страницы?

Что у меня есть:

Конкретная страница(ElementPage) для использования модуля

ElementPage:
  extensions:
    - DNADesign\Elemental\Extensions\ElementalPageExtension

В ElementPage.php У меня есть два $has_one, например:

private static $has_one = [
    'LeftElemental' => ElementalArea::class,
    'RightElemental' => ElementalArea::class
];

Они работают нормально, поля отображаются и могут отображаться вtemplate.

Попытка поместить их на собственную вкладку, getCMSFields:

public function getCMSFields()
{
    $fields = parent::getCMSFields();

    // To remove the default added one
    $fields->removeByName('ElementalArea');

    $fields->addFieldToTab('Root.LeftContentBlocks', ElementalArea::create('LeftElementalID'));

    return $fields;
}

Результирующая ошибка:

[Предупреждение пользователя] DataObject :: __ конструкция прошлаЗначение 'LeftElementalID'. Предполагается передать массив, взятый прямо из базы данных. Возможно, вам следует использовать DataList :: create () -> First ();вместо этого?

Я не ожидал, что это сработает, но я не вижу нужной ему подписи создания.

РЕДАКТИРОВАТЬ:

Это, кажется, делает это:

public function getCMSFields()
{
    $fields = parent::getCMSFields();

    // To remove the default added one
    $fields->removeByName('ElementalArea');

    $fields->addFieldToTab('Root.LeftContentBlocks', ElementalAreaField::create('LeftElemental', $this->LeftElemental(), $this->getElementalTypes()));
    $fields->addFieldToTab('Root.RightContentBlocks', ElementalAreaField::create('RightElemental', $this->RightElemental(), $this->getElementalTypes()));

    return $fields;
}

Я не совсем уверен, $this->getElementalTypes() - это то, что я должен делать. Любые улучшения / исправления приветствуются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...