Я работаю над проектом Silverstripe, который имеет отношение Batch> Item.
Партия может содержать до 50 000 наименований.
Вот как устанавливаются отношения:
class Item extends DataObject {
private static $has_one = array(
'Batch' => 'Batch'
);
class Batch extends DataObject {
private static $has_many = array(
'Items' => 'Item'
);
class BatchAdmin extends ModelAdmin {
private static $managed_models = array(
'Batch',
'Item'
);
Это изначально дает пользователю CMS возможность загрузки все Предметы как CSV от CMS.
Я пытаюсь решить две вещи:
Как сделать так, чтобы при загрузке больших файлов не было ошибок из-за недостатка памяти / времени сценария и т. Д.
Как добавить кнопку «Экспорт в CSV» в каждый пакет, который загружает только элементы из этого пакета в виде CSV?
Чтобы добавить Экспорт в CSV кнопка для Batch
который экспортирует связанный Items
мы добавляем GridFieldExportButton
к пакетным полям CMS:
class Batch extends DataObject {
private static $has_many = array(
'Items' => 'Item'
);
public function getCMSFields() {
$itemsConfig = GridFieldConfig_RelationEditor::create();
$itemsConfig->addComponent(new GridFieldExportButton());
$itemsField = new GridField(
'Items',
'Items',
$this->Items(),
$itemsConfig
);
$fields = new FieldList(
$itemsField
);
return $fields;
}
}
Других решений пока нет …