i-lateral / silverstripe-slightly-better-bulkloader
这是 SilverStripe 批量加载器,但略好一些
1.0.0
2019-02-25 10:18 UTC
Requires
- silverstripe/framework: ~4.0
Requires (Dev)
- league/csv: ^8
- phpunit/phpunit: ^5.7
- silverstripe/versioned: ^1
- squizlabs/php_codesniffer: ^3.0
README
这是 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(); } }