【发布时间】:2016-03-21 03:43:10
【问题描述】:
我想为 SilverStripe 3.3.1 站点中的所有文件添加标签字段。我正在使用博客 v2.4.0 并将标签字段升级到 v1.2.1。
我的FileExtension 配置为扩展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);
}
}
FileTag 类是:
class FileTag extends DataObject
{
private static $db = ['Title' => 'Varchar(255)'];
private static $belongs_many_many = ['Files' => 'File'];
}
extension hook I'm attaching to is here,它提供标准的FieldList,如the extension documentation 中所述。
问题!
该字段正确显示,但它位于 Root.Main 选项卡之外,如下所示:
我试过了:
- 使用
addFieldToTab('Root.Main', $field)- 结果为[User Error] FieldList::addFieldToTab() Tried to add a tab to object 'FieldList' - 'Root' didn't exist. - 如上,使用
Root和Main
为什么这不能按预期的方式工作?
【问题讨论】:
-
你能通过完整的代码来抛出“根不存在”错误吗?它应该在理论上有效......
-
嘿@wmk - 它实际上是由用
$fields->addFieldToTab('Root.Main', $field)替换$fields->push($field)引起的
标签: php silverstripe