martiallabs/laravel-nova-csv-import

Laravel Nova的完整CSV导入工具。

1.0.0 2024-05-16 11:58 UTC

This package is not auto-updated.

Last update: 2024-09-20 12:00:27 UTC


README

Latest Stable Version Total Downloads License

RINGER

为Laravel Nova提供丰富而强大的CSV导入组件。CSV导入允许您轻松上传CSV或Excel文件,并将它们的数据导入任何Nova资源。

无需让您的文件与数据库匹配!导入过程允许您选择如何将上传文件的相关列映射到模型上的属性,并在结束时提供有关哪些工作以及哪些没有工作的总结。

您甚至可以在导入值时修改它们,以添加哈希或其他操作,设置自定义值,随机值,现在甚至可以将多个值组合成一个字段导入

此包最初是基于Sparclex在nova-import-card包上所做的作品构建的。

Laravel Nova CSV Import Screenshot

注意:从v0.4.0版本开始,CSV导入需要Nova v4及以上版本。对于v4之前的Nova版本,请使用CSV导入v0.3.0或更低版本。请务必注意,v0.4.0之前的版本将不再维护。

赞助

CSV导入对个人或商业用途完全免费。如果它使您的工作更容易或您只想确保它继续得到支持和改进,我非常感谢您的捐赠!

现在通过GitHub Sponsors捐赠

谢谢 🙏

赞助商

Laradir - 将最好的Laravel开发者与最好的Laravel团队合作

安装

通过Composer安装

composer require simonhamp/laravel-nova-csv-import --with-all-dependencies

安装后,您必须在应用程序的NovaServiceProvider(通常位于app/Providers/NovaServiceProvider.php)中注册组件

namespace App\Providers;

use SimonHamp\LaravelNovaCsvImport\LaravelNovaCsvImport;

class NovaServiceProvider extends NovaApplicationServiceProvider
{
    public function tools()
    {
        return [
            new LaravelNovaCsvImport,
        ];
    }
}

如果您已自定义Nova主菜单

如果您已自定义主菜单,则需要手动在自定义菜单中注册工具菜单项,以便它显示出来。

例如,在您的app/Providers/NovaServiceProvider.php

public function boot()
{
    parent::boot();

    Nova::mainMenu(function (Request $request) {
        return [
            // ... other custom menu items

            MenuSection::make('CSV Import')
                ->path('/csv-import')
                ->icon('upload'),
        ];
    }
}

选项

默认情况下,所有 Nova资源都可用于导入。但是,您可以通过多种方式显式限制可导入的内容。

public static $canImportResource = false;
默认值: true
将此静态属性添加到资源中,以防止它在Nova CSV导入工具界面中显示。

public static function canImportResource($request): bool
定义一个canImportResource方法,使用更复杂的逻辑来决定此资源是否可以在导入时显示。如果已定义,则此方法优先于$canImportResource属性。

排除某些字段

CSV导入旨在尊重您的Nova配置,但在某些时候,您可能希望导入的行为与Nova界面略有不同。为此,您可以使用excludeAttributesFromImport()方法

public static function excludeAttributesFromImport(): array
默认值: []
定义一个excludeAttributesFromImport方法,它返回一个属性名称数组,您想要从导入工具中排除,使其不可见。

示例

// App\Nova\User
public static function canImportResource(Request $request)
{
    return $request->user()->can("create", self::$model);
}

public static function excludeAttributesFromImport()
{
    return ['password'];
}

导入类

该包在幕后使用 maatwebsite/excel 来处理实际的导入。您可以了解更多关于 导入工作原理 的信息。

您可以通过在发布的该包配置文件中提供相关的类名来自定义导入器类。

首先,发布配置文件

php artisan vendor:publish --tag=csv-import

然后,定义并注册您自己的导入器类

<?php

return [
    'importer' =>  App\Utilities\Importer::class,
];

用法

CSV 导入是一个强大的工具,但我在努力使其简单易用。有关技巧和窍门,请查看我的 YouTube 播单

完整文档即将推出。

测试

我们需要测试!您可以帮忙吗?请考虑贡献力量。

贡献力量

请参阅 CONTRIBUTING 以获取详细信息。

许可

MIT 许可证 (MIT)。请参阅 LICENSE 以获取更多详细信息。