think.studio/nova-resource-dynamic-export
Composer 安装命令:
composer require think.studio/nova-resource-dynamic-export
包简介
Functionality to dynamically export resources.
关键字:
README 文档
README
Functionality to dynamically export resources.
| Nova | Package |
|---|---|
| V4 | V1 |
Installation
You can install the package via composer:
composer require think.studio/nova-resource-dynamic-export # optional publish configs php artisan vendor:publish --provider="NovaResourceDynamicExport\ServiceProvider" --tag="config"
Update filesystem configuration if you will used default storage disk.
// config/filesystems.php 'exports' => [ 'driver' => 'local', 'root' => storage_path('app/exports'), ],
And add resource to your admin:
// Providers/NovaServiceProvider.php protected function resources(): void { parent::resources(); Nova::resources([ \NovaResourceDynamicExport\Nova\Resources\ExportStoredFile::class, ]); }
Please do not forget add policies for \NovaResourceDynamicExport\Models\ExportStoredFile model or your custom model
Usage
General resources export action
public function actions(NovaRequest $request): array { return [ \NovaResourceDynamicExport\Nova\Actions\ExportResourceAction::make() ->askForFilename() ->askForWriterType() ->askForColumns([ 'id', 'title' => 'Fund title', 'publication_status', 'description', 'color_code', 'selected_report', ]) ->setPostReplaceFieldValuesWhenOnResource(function ($array, \App\Models\Fund $model, $only) { if (in_array('selected_report', $only)) { $array['selected_report'] = $model->selectedReport->report_date?->format('Y-m-d'); } return $array; }), ]; }
Custom specified export
Firstly create custom export class
// Exports/PostsWithTagBreaking.php use Illuminate\Database\Eloquent\Builder; use Maatwebsite\Excel\Concerns\Exportable; use Maatwebsite\Excel\Concerns\FromQuery; use Maatwebsite\Excel\Concerns\WithHeadings; use Maatwebsite\Excel\Concerns\WithMapping; use NovaResourceDynamicExport\Export\CustomExport; use NovaResourceDynamicExport\Tests\Fixtures\Models\Post; class PostsWithTagBreaking extends CustomExport implements FromQuery, WithHeadings, WithMapping { use Exportable; public function query() { return Post::query() ->whereHas('tags', fn (Builder $q) => $q->where('name', 'Breaking')); } public function headings(): array { return [ 'Title', 'content', ]; } /** * @param Post $row */ public function map($row): array { return [ 'title' => $row->title, 'content' => $row->content, ]; } }
Then add this class using any service provider:
// Providers/NovaServiceProvider.php public function boot(): void { parent::boot(); CustomResourcesExport::use(PostsWithTagBreaking::class); }
THis is all, not in ExportStoredFile resource index you will see new action to run custom exports
Credits
think.studio/nova-resource-dynamic-export 适用场景与选型建议
think.studio/nova-resource-dynamic-export 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 60 次下载、GitHub Stars 达 0, 最近一次更新时间为 2023 年 09 月 06 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「configuration」 「nova」 「export」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 think.studio/nova-resource-dynamic-export 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 think.studio/nova-resource-dynamic-export 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 think.studio/nova-resource-dynamic-export 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
A Laravel Nova card that shows you your system information.
A Laravel Nova card.
Configuration component
Bulk export of sylius resources
A Laravel Nova package for publishable fields
A Laravel Nova package for translatable fields
统计信息
- 总下载量: 60
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 9
- 依赖项目数: 1
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2023-09-06