simonhamp/laravel-nova-csv-import

为Laravel Nova提供完整的CSV导入工具。

v0.7.2 2023-08-15 02:53 UTC

README

Latest Stable Version Total Downloads License

为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赞助捐赠

谢谢 🙏

赞助商

Laradir - 连接最好的Laravel开发者和最好的Laravel团队。
quantumweb - 一家裸机网络机构。更少的层次,更好的结果。
RedGalaxy - 位于剑桥郡的Web应用开发工作室,提供帮助业务提高效率和盈利能力的解决方案。
Sevalla - 在一个简单直观的平台中托管和管理您的应用程序、数据库和静态站点。

安装

通过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