anaseqal/nova-import

A Laravel Nova import tool.
416,038 70
Install
composer require anaseqal/nova-import
Latest Version:0.0.6
PHP:>=7.1.0
License:MIT
Last Updated:Dec 7, 2020
Links: GitHub  ·  Packagist
Maintainer: anas_eqal

Nova Import

💡 Suggestion: Nova v3.10.0+ has ability to create "standalone" actions for running actions without selecting resources. you can create import action without using this package. Tutorial

Import data to resources.

Screenshot

Installation

You can install the package in to a Laravel app that uses Nova via composer:

composer require anaseqal/nova-import

Register the tool in your app/Providers/NovaServiceProvider.php:

use Anaseqal\NovaImport\NovaImport;

// ...

public function tools()
{
    return [
        new NovaImport,
        // ...
    ];
}

Usage

To use this tool, you need to create two things:

  1. Create an import class for your resource using Laravel Excel.

  2. Create a custom Nova Action file:

<?php

namespace App\Nova\Actions;

use Illuminate\Bus\Queueable;
use Anaseqal\NovaImport\Actions\Action;
use Illuminate\Support\Collection;
use Laravel\Nova\Fields\ActionFields;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Laravel\Nova\Fields\File;

use App\Imports\UsersImport;
use Maatwebsite\Excel\Facades\Excel;

class ImportUsers extends Action
{
    use InteractsWithQueue, Queueable, SerializesModels;

    /**
     * Indicates if this action is only available on the resource detail view.
     *
     * @var bool
     */
    public $onlyOnIndex = true;

    /**
     * Get the displayable name of the action.
     *
     * @return string
     */
    public function name() {
        return __('Import Users');
    }

    /**
     * @return string
     */
    public function uriKey() :string
    {
        return 'import-users';
    }

    /**
     * Perform the action.
     *
     * @param  \Laravel\Nova\Fields\ActionFields  $fields
     * @return mixed
     */
    public function handle(ActionFields $fields)
    {
        Excel::import(new UsersImport, $fields->file);

        return Action::message('It worked!');
    }

    /**
     * Get the fields available on the action.
     *
     * @return array
     */
    public function fields()
    {
        return [
            File::make('File')
                ->rules('required'),
        ];
    }
}
  1. Register the action into your resource:
/**
 * Get the actions available for the resource.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return array
 */
public function actions(Request $request)
{
    return [new Actions\ImportUsers];
}

Action Name must use the Format of Import{ResourceName}, for example ImportUsers or ImportCountries.

Please note that it extends Anaseqal\NovaImport\Actions\Action not normal Nova Actions because it doesn't applies on models!

License

The MIT License (MIT). Please see License File for more information.

Related Packages

davidpiesse/nova-maintenance-mode

Enable and disable Maintenance Mode from within Laravel Nova

64,076 33
unm/laravel4-opencloud

A laravel 4.1 service provider package that wraps the Rackspace/Openstack PHP SD...

4 7
kreitje/nova-horizon-stats

A Laravel Nova card.

177,965 28
naoray/nova-json

Nova json field to spread a json column throughout multiple fields.

522,456 37
spatie/nova-tail-tool

A Laravel Nova tool to display the application log.

129,391 119