i-lateral / silverstripe-slightly-better-bulkloader

这是 SilverStripe 批量加载器,但略好一些

1.0.0 2019-02-25 10:18 UTC

This package is auto-updated.

Last update: 2024-08-25 22:17:59 UTC


README

Scrutinizer Code Quality Build Status

这是 SilverStripe 批量加载器,但略好一些!

此模块扩展了默认的 SS 版本,并为每行导入添加错误日志,并尝试解决 Excel 有时在 CSV 末尾添加空白列的问题(这会导致导入失败)

安装

通过 composer 安装

# composer require i-lateral/silverstripe-slightly-better-bulkloader

使用

默认情况下,此模块应自动将 BulkLoader_Result 替换为跟踪错误的自定义版本。

但是,为了充分利用它,您还需要实现自己的 CSVBulkLoader 版本,例如

ModelAdmin

通过 ModelAdmin 添加自定义 CSV 上传器

namespace App\Admin;

use SilverStripe\Admin\ModelAdmin;
use ilateral\SilverStripe\SlightlyBetterBulkLoader\CsvBulkLoader;

class MyModelAdmin extends ModelAdmin
{
    private static $managed_models = [
        MyDataObject::class
    ];

    private static $model_importers = [
        MyDataObject::class => CsvBulkLoader::class
    ];
}

手动调用

在表单提交后添加自定义 CSV 导入的示例。

use SilverStripe\Forms\Form;
use ilateral\SilverStripe\SlightlyBetterBulkLoader\CsvBulkLoader;

class MyImportForm extends Form
{
    public function import($data, $form)
    {
        $loader = CsvBulkLoader::create();
        $results = $loader->load($_FILES['_CsvFile']['tmp_name']);

        $form->sessionMessage(
            $results->getMessagesString("</br>"),
            $results->getMessageType(),
            ValidationResult::CAST_HTML
        );

        return $this->redirectBack();
    }
}