sukohi/csv-validator

A Laravel package to validate csv data.
50,979 8
Install
composer require sukohi/csv-validator
Latest Version:3.0.4
Laravel:5 – 8
Older releases:4
License:MIT
Last Updated:Oct 2, 2020
Links: GitHub  ·  Packagist
Maintainer: Sukohi

CsvValidator

A Laravel package that allows you to validate csv data.
This package is compatible with Laravel 5.7 -> 8.X

Installation

Run this command.

composer require sukohi/csv-validator:3.*

Basic usage

You can use a rule called Csv as usual validation.
And all the validation rules of Laravel is available for $csv_rules as follows.

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Sukohi\CsvValidator\Rules\Csv;

class CsvValidatorController extends Controller
{
    public function store(Request $request) {

        $csv_rules = [
            0 => 'required',
            1 => 'integer',
            2 => 'required|min:10'
        ];

        $request->validate([
            'users_csv' => [
                new Csv($csv_rules) // <- here
            ]
        ]);

        // Do something..

    }
}

with Options

$csv_rules = [
    0 => 'required',
    1 => 'integer',
    2 => 'required|min:10'
];
$options = [
    'encoding' => 'sjsin-win',
    'start_row' => 1,   // <- Starting validation from row one, not zero. (*1)
    'end_row' => 4,     // <- Ending validation
    'row_callback' => function($row_number, $row_data) {

        return true;    // `false` means skipping validation

    }
];
$request->validate([
    'csv_file' => [
        new Csv($csv_rules, $options)
    ]
]);

(*1) For example, if you don't want to validate the header row, it means the first row, set 2 here.

Note: The former coding is also available.

new Csv($csv_rules, 'sjis-win')

Csv rules

You can skip column like this.

$csv_rules = [
    0 => 'required',
    3 => 'required|min:10'
];

$request->validate([
    'csv_file' => [
        new Csv($csv_rules)
    ]
]);

Retrieve

You can access csv data by adding _data after attribute of csv file as follows.

$csv_data = $request->csv_file_data;    // when attribute is `csv_file`

Messages

Attributes of error messages are like this.

The A1 field is required.
The C1 field is required.
The C2 must be at least 10 characters.
The C3 must be at least 10 characters.
The C4 field is required.

Contributor

Thank you for your contributions!

License

This package is licensed under the MIT License.

Copyright 2020 Sukohi Kuhoh

Related Packages

doctrine/dbal

Powerful PHP database abstraction layer (DBAL) with many features for database s...

644,549,754 9,698
laravel/framework

The Laravel Framework.

598,760,099 34,966
laravel/tinker

Powerful REPL for the Laravel framework.

507,193,856 7,441
laravel/serializable-closure

Laravel Serializable Closure provides an easy and secure way to serialize closur...

423,477,751 607
nunomaduro/collision

Cli error handling for console/command-line PHP applications.

399,241,428 4,660

Version History

Version Released PHP Laravel License
3.0.4 ^5.7|^6.0|^7.0|^8.0 MIT
3.0.3 ^5.7|^6.0|^7.0 MIT
3.0.2 ^5.7|^6.0 MIT
3.0.1 ^5.7|^6.0 MIT
3.0.0 ^5.7|^6.0 MIT