【发布时间】:2018-02-08 16:31:44
【问题描述】:
我有两个不同的数据对象(StockExchangeShare 和 NewsArticle),它们与 many_many 关系链接。
在 NewsArticle.php 中:
private static $many_many = [
'Shares' => StockExchangeShare::class
];
在 StockExchangeShare.php 中:
private static $belongs_many_many = [
'NewsArticles' => NewsArticle::class
];
添加新新闻文章时,用户应该能够将一些现有的证券交易所股票链接到新文章。这应该使用配置为“GridFieldConfig_RelationEditor”的 GridField 来完成。
目前,这仅在已创建新闻文章后才有效。我无法通过网格字段将共享添加到新的(未保存的)文章中。这是错误信息:
E_RECOVERABLE_ERROR:传递给 SilverStripe\ORM\DataList::subtract() 的参数 1 必须是 SilverStripe\ORM\DataList 的实例,给定 SilverStripe\ORM\UnsavedRelationList 的实例,在 /vendor/silverstripe/framework/src/ 中调用Forms/GridField/GridFieldAddExistingAutocompleter.php 在第 247 行
这是我用来创建网格字段的代码:
$gridFieldConfig = GridFieldConfig_RelationEditor::create();
$gridFieldConfig->removeComponentsByType(GridFieldAddNewButton::class);
$gridFieldConfig->getComponentByType(GridFieldAddExistingAutocompleter::class)->setSearchFields(array('name', 'tickerSymbol', 'isin', 'wpknr'));
$gridFieldConfig->getComponentByType(GridFieldAddExistingAutocompleter::class)->setResultsFormat('$name | $isin');
$fields->addFieldsToTab('Root.Main', [
GridField::create(
'Shares',
'Shares',
$this->Shares(),
$gridFieldConfig
),
]);
这是 SilverStripe 的问题还是我做错了什么?
【问题讨论】:
标签: php silverstripe silverstripe-4