Extending File: can't add field to Root.Main

Viewed 257

I want to add a Tag field to all Files in a SilverStripe 3.3.1 site. I'm using Blog v2.4.0 and have upgraded tagfield to v1.2.1.

My FileExtension is configured to extend File:

class FileExtension extends DataExtension
{
    private static $many_many = ['FileTags' => 'FileTag'];

    public function updateCMSFields(FieldList $fields)
    {
        $tagField = TagField::create('FileTags', 'Tags', FileTag::get(), $this->owner->FileTags())
            ->setShouldLazyLoad(true)
            ->setCanCreate(true);

        $fields->push($tagField);
    }
}

The FileTag class is:

class FileTag extends DataObject
{
    private static $db = ['Title' => 'Varchar(255)'];

    private static $belongs_many_many = ['Files' => 'File'];
}

The extension hook I'm attaching to is here, and it provides a standard FieldList as described in the extension documentation.

The problem!

The field shows up correctly, but it's outside of the Root.Main tab and looks like this:

Its outside the tab

I've tried:

  • Using addFieldToTab('Root.Main', $field) - it results in [User Error] FieldList::addFieldToTab() Tried to add a tab to object 'FieldList' - 'Root' didn't exist.
  • As above, using Root and Main

Why doesn't this work the way it is supposed to?

1 Answers
Related