获取不同的模型 CMS 字段,将它们添加到 CMS 选项卡
Get different model CMS fields, add them to a CMS tab
在 Silverstripe(第 3 版)模型管理中,如何从不同模型中获取字段集合,以便将它们添加到该模型的管理中?
我已经尝试使用 FieldList::addFieldsToTab:
$loremIpsumTab = Tab::create('LoremIpsum');
$fields->fieldByName('Root')->insertAfter('Main', $loremIpsumTab);
$loremIpsumFields = (
$this->LoremIpsum()->getCMSFields()
->fieldByName('Root.Main')->Fields());
$fields->addFieldsToTab('Root.LoremIpsum', $loremIpsumFields);
正确创建了选项卡,但错误地移动了字段:所有 'Root.Main' 中的字段被移动,不仅是 LoremIpsum 模型的字段。
我原以为这会询问其 CMS 字段的相关 LoremIpsum 模型:
$this->LoremIpsum()->getCMSFields()
->fieldByName('Root.Main')->Fields()
那么我如何才能仅移动 LoremIpsum 模型的那些字段?
您好,欢迎来到 Whosebug。你想达到什么目的?
您似乎想编辑来自其他数据对象的 has_one 关系数据对象。此场景有 ready-to-use 和经过测试的模块,例如https://github.com/stevie-mayhew/hasoneedit/tree/3.x ,因为即使您设法显示字段,SilverStripe 也会假定这些值属于当前模型而不属于关系。然后你将有额外的工作来保存它等...
您当前模型和 LoremIpsum 模型中的某些字段具有相同的名称,例如ID,标题,创建。这会导致上面的代码出现问题,因为您只能有一个字段,例如表单中的 ID。
"hasoneedit" 模块通过为关系的字段添加前缀来克服这个问题。
在 Silverstripe(第 3 版)模型管理中,如何从不同模型中获取字段集合,以便将它们添加到该模型的管理中?
我已经尝试使用 FieldList::addFieldsToTab:
$loremIpsumTab = Tab::create('LoremIpsum');
$fields->fieldByName('Root')->insertAfter('Main', $loremIpsumTab);
$loremIpsumFields = (
$this->LoremIpsum()->getCMSFields()
->fieldByName('Root.Main')->Fields());
$fields->addFieldsToTab('Root.LoremIpsum', $loremIpsumFields);
正确创建了选项卡,但错误地移动了字段:所有 'Root.Main' 中的字段被移动,不仅是 LoremIpsum 模型的字段。
我原以为这会询问其 CMS 字段的相关 LoremIpsum 模型:
$this->LoremIpsum()->getCMSFields()
->fieldByName('Root.Main')->Fields()
那么我如何才能仅移动 LoremIpsum 模型的那些字段?
您好,欢迎来到 Whosebug。你想达到什么目的?
您似乎想编辑来自其他数据对象的 has_one 关系数据对象。此场景有 ready-to-use 和经过测试的模块,例如https://github.com/stevie-mayhew/hasoneedit/tree/3.x ,因为即使您设法显示字段,SilverStripe 也会假定这些值属于当前模型而不属于关系。然后你将有额外的工作来保存它等...
您当前模型和 LoremIpsum 模型中的某些字段具有相同的名称,例如ID,标题,创建。这会导致上面的代码出现问题,因为您只能有一个字段,例如表单中的 ID。
"hasoneedit" 模块通过为关系的字段添加前缀来克服这个问题。