creode / laravel-nova-assets
基于现有的Laravel Assets模块,增加功能使其能够在Nova中工作。
Requires
- php: ^8.1
- creode/laravel-assets: ^1.4
- creode/nova-mime-asset-icon-field: ^1.0
- creode/permissions-seeder: ^1.0
- digital-creative/nova-filepond: ^1.0.3
- illuminate/contracts: ^10.0
- intervention/image: ^3.0
- laravel/nova: ^4.27
- spatie/laravel-package-tools: ^1.14.0
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^7.8
- orchestra/canvas: ^8.11
- orchestra/testbench: ^8.8
- pestphp/pest: ^2.20
- pestphp/pest-plugin-arch: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
This package is auto-updated.
Last update: 2024-09-08 16:14:27 UTC
README
基于现有的Laravel Assets模块,增加可钩子的功能使其能够在Nova中工作。
安装
您可以通过Composer安装此包
composer require creode/laravel-nova-assets
您可以使用以下命令发布配置文件
php artisan vendor:publish --tag="nova-assets-config"
这是发布配置文件的内容
// config for Creode/LaravelNovaAssets return [ /* |-------------------------------------------------------------------------- | Default Upload Accepted Mime Types |-------------------------------------------------------------------------- | | This value contains the default bulk fields which will be rendered when | doing a bulk upload. You can add or remove fields as you wish. | */ 'default_upload_accepted_mime_types' => [ 'image/*', 'application/zip', 'zip', 'application/pdf', ], /* |-------------------------------------------------------------------------- | Allowed Zip File Extensions |-------------------------------------------------------------------------- | | This value contains an array of allowed file extensions which will be | pulled when extracting zip files during a bulk upload action. | */ 'accepted_zip_file_extensions' => [ 'png', 'jpeg', 'jpg', 'webp', 'pdf', ], /* |-------------------------------------------------------------------------- | Asset Policy |-------------------------------------------------------------------------- | | This value contains the policy which will be used when verifying if a | user can perform an action on an asset. You can change this to your own | policy if you wish. | */ 'asset_policy' => \Creode\LaravelNovaAssets\Policies\AssetPolicy::class, /* |-------------------------------------------------------------------------- | Image Driver |-------------------------------------------------------------------------- | | This value contains the image driver which will be used when generating | thumbnails. You can change this to your own driver if you wish. Drivers | must implement the Intervention\Image\Interfaces\DriverInterface | interface. | | This can be one of the following: | Intervention\Image\Drivers\Gd\Driver::class | Intervention\Image\Drivers\Imagick\Driver::class | */ 'image_driver' => Intervention\Image\Drivers\Gd\Driver::class, /* |-------------------------------------------------------------------------- | Traffic Cop |-------------------------------------------------------------------------- | | Indicates whether Nova should check for modifications between viewing | and updating a resource. | */ 'traffic_cop' => true, /* |-------------------------------------------------------------------------- | Show Max Upload Size |-------------------------------------------------------------------------- | | Indicates whether to show the max upload size in the asset resource. | */ 'show_max_upload_size' => false, ];
用法
本模块的目的是使用现有的资产模型类并将其包装成Nova资源。这使得我们能够在Nova中使用资产模块的现有功能。我们使用一些可钩子的功能,如下文所述,允许任何子模块向资源添加自定义字段和操作。
注册自定义资源字段
您可以将自定义资源字段注册到标准Nova页面(详细、编辑、创建)以及批量资产上传操作中。为此,您需要监听DefineAssetFieldsEvent
事件并将字段添加到$fields
数组中。有关Nova字段的完整列表,请参阅Nova文档。
Event::listen(function (DefineAssetFieldsEvent $event) { $event->fields[] = Text::make('Folder', 'folder_id'); });
注册自定义资源操作
您可以将自定义资源操作注册到资产资源中。为此,您需要监听DefineAssetActionsEvent
事件并将操作添加到$actions
数组中。这些操作仅使用Nova的标准操作功能。有关定义操作的详细信息,请参阅Nova文档。
Event::listen(function (DefineAssetActionsEvent $event) { $event->actions[] = TestActionClass::make(); });
注册自定义批量资产字段
您可以将自定义批量资产字段注册到批量资产上传操作中。为此,您需要监听DefineBulkAssetFieldsEvent
事件并将字段添加到$fields
数组中。有关Nova字段的完整列表,请参阅Nova文档。
Event::listen(function (DefineBulkAssetFieldsEvent $event) { $event->fields[] = Text::make('Folder', 'folder_id'); });
在另一个字段之后插入字段
从本模块的1.4.0
版本开始,您现在可以运行一个辅助函数来在另一个属性之后添加一个属性。这可以通过以下方式完成
Event::listen(function (DefineAssetFieldsEvent $event) { $event->addFieldAfter('name', Text::make('Folder', 'folder_id')); });
这将直接在另一个字段之后注入字段。如果您想在特定的字段之后添加字段但不想担心字段数组的顺序,这很有用。唯一的限制是,如果提供的第一个属性的字段不存在,它将不会添加字段。
权限
此模块公开了一个新的权限生成器类,需要将其发布到您的应用程序中,以便为新资源授予权限。为此,您需要运行以下命令
php artisan vendor:publish --tag="nova-assets-seeders"
这将创建一个名为AssetRoleAndPermissionSeeder.php
的新文件,位于您的database/seeders
目录中。这将需要运行以授予新资源的权限。您可以通过运行以下命令来运行此命令
php artisan db:seed --class=AssetRoleAndPermissionSeeder
现在,您应该在数据库中看到一系列权限以及一个名为asset-manager
的新角色。此角色将拥有管理资产所需的所有权限。在运行此命令之前,需要设置spatie/laravel-permissions
包的任何表格。有关更多信息,请参阅文档。
测试
composer test
更新日志
请参阅变更日志了解最近更改的详细信息。
贡献
请参阅贡献指南以获取详细信息。
安全漏洞
请查阅我们的安全政策了解如何报告安全漏洞。
鸣谢
许可协议
MIT 许可协议 (MIT)。有关更多信息,请参阅许可文件。