konafets/laravel-csv-validator

一个使用 cyberduck/laravel-excel 验证 CSV 文件的 Laravel 扩展包

dev-develop 2017-12-04 23:27 UTC

This package is auto-updated.

Last update: 2024-09-17 11:30:21 UTC


README

Latest Stable Version Total Downloads Latest Unstable Version License Monthly Downloads

一个用于验证 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 NameLast NameYear 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