nova-kit / nova-on-vapor
Nova on Vapor 集成库
v1.2.0
2024-03-07 11:40 UTC
Requires
- php: ^7.3 || ^8.0
- composer-runtime-api: ^2.2
- illuminate/support: ^8.83.4 || ^9.51 || ^10.0 || ^11.0
- laravel/vapor-core: ^2.37
- nova-kit/nova-queued-export-as-csv: ^1.4
Requires (Dev)
- larastan/larastan: ^2.4
- laravel/nova: *
- league/flysystem-aws-s3-v3: ^1.0 || ^3.0
- nova-kit/nova-devtool: ^1.3
- orchestra/testbench: ^7.40 || ^8.21 || ^9.0
- phpunit/phpunit: ^9.6 || ^10.1
README
此库旨在解决在使用 Laravel Nova on Laravel Vapor 时的一些限制,包括
- 无法在 Artisan 的交互模式下使用,影响
nova:user
命令。 - 通过 Minio 在本地使用
VaporFile
和VaporImage
。 -
ExportAsCsv
支持 Laravel Vapor
安装
通过 composer 安装,请在终端运行以下命令
composer require "nova-kit/nova-on-vapor"
用法
新的 nova:vapor-user
命令
该命令将交互模式问题转换为 artisan 命令选项,因此您可以使用 --email
、--name
以及可选的 --password
,例如
php artisan nova:vapor-user --name="Administrator" --email="nova@laravel.com"
注意:如果不传递
--password
,则代码将生成一个随机的 8 位密码,您可以使用忘记密码功能来重置该值。
警告:使用
--password
是可能的,但请注意该值将被记录到 CloudWatch。
本地用于 VaporFile
和 VaporImage
的 Minio
您可以在本地设置 Minio 并将其用作本地 S3 的替代品。首先,您需要通过运行以下命令安装 league/flysystem-aws-s3-v3
composer require "league/flysystem-aws-s3-v3"
接下来,您需要启用并配置 Minio
NOVA_ON_VAPOR_ENABLES_MINIO=(true) MINIO_USERNAME= MINIO_PASSWORD= MINIO_ENDPOINT= AWS_ACCESS_KEY_ID="${MINIO_USERNAME}" AWS_SECRET_ACCESS_KEY="${MINIO_PASSWORD}" AWS_DEFAULT_REGION=us-east-1 AWS_BUCKET=local AWS_ENDPOINT="${MINIO_ENDPOINT}" AWS_USE_PATH_STYLE_ENDPOINT=(true)
CSV 导出
您可以将 Laravel\Nova\Actions\ExportAsCsv
替换为 NovaKit\NovaOnVapor\Actions\VaporExportAsCsv
use Laravel\Nova\Actions\ExportAsCsv; use NovaKit\NovaOnVapor\Actions\VaporExportAsCsv; /** * Get the actions available for the resource. * * @param \Laravel\Nova\Http\Requests\NovaRequest $request * @return array */ public function actions(NovaRequest $request) { return [ VaporExportAsCsv::make(), ]; }
如果您想更改存储磁盘以存储可供下载的 CSV 文件,您可以在注册操作时调用 withStorageDisk()
方法
return [ VaporExportAsCsv::make()->withStorageDisk('s3'), ];
downloadViaTemporaryUrl
混合
Laravel Vapor 的响应限制为 6MB,在您需要下载大文件时这可能会导致问题。您可以通过利用 Storage::temporaryUrl()
来下载文件来避免此问题。
VaporFile::make('Filename')->downloadViaTemporaryUrl(),