konafets / laravel-csv-validator
一个使用 cyberduck/laravel-excel 验证 CSV 文件的 Laravel 扩展包
dev-develop
2017-12-04 23:27 UTC
Requires
- php: ^7.0
- cyber-duck/laravel-excel: ^1.2
- laravel/framework: ^5.5
This package is auto-updated.
Last update: 2024-09-17 11:30:21 UTC
README
一个用于验证 CSV、Excel 和 OpenOffice 数据的 Laravel 5.5 扩展包。
该包背后的理念很简单:只需使用与请求验证相同的验证逻辑和语法。
目前该包仅支持具有标题行的 CSV / Excel 文件
安装
执行 composer 命令。
composer require konafets/laravel-csv-validator:1.0-dev
感谢 Laravel 的自动发现功能,你已完成操作。ServiceProvider 和 Alias 会自动注册。
基本用法
$csvPath = 'employees.csv';
$rules = [
'First Name' => 'required|string',
'Last Name' => 'required|string',
'Year of Birth' => 'required|numeric',
];
$csvValidator = CsvValidator::make($csvPath, $rules);
if($csvValidator->fails()) {
$errors = $csvValidator->getErrors();
} else {
$csvData = $csvValidator->getData();
}
规则
$rules = [
'First Name' => 'required|string',
'Last Name' => 'required|string',
'Year of Birth' => 'required|numeric',
];
在此示例中,CSV 的第一行需要包含三个列,列名为 First Name
、Last Name
和 Year of Birth
。你的文件中可能有其他列,但我们不关心它们。
这些键将用作错误消息的属性名。
有关规则的详细信息,请查看。
错误消息
在调用 fails() 之后,你可以获取错误消息。
$errors = $csvValidator->getErrors();
foreach ($errors as $rowIndex => $row) {
foreach ($row as $column => $messages) {
echo 'Row ' . $rowIndex . ', Col ' . $column . ': ' . implode(',' , $messages) . '<br>';
}
}
CSV 数据
在调用 fails() 之后,你还可以获取 CSV 数据。
$csvData = $csvValidator->getData();
异常
当
- 你的 CSV 中没有任何数据时,Validator 会抛出异常。
- 标题键未找到。
一些示例代码
try {
$csvValidator = CsvValidator::make($csv_path, $rules, $encoding);
if($csvValidator->fails()) {
// Do something..
}
} catch (\Exception $e) {
echo $e->getMessage();
}
致谢
这个包受到了https://github.com/SUKOHI/CsvValidator的极大启发。他们使用maatwebsite/excel
作为底层 Excel 库,而此包使用box/sprout
。