bbs-lab / nova-cloudinary-field
为 Laravel Nova 提供的 Cloudinary 媒体库字段。
v1.0.0
2024-06-28 15:04 UTC
Requires
- php: ^8.1
- cloudinary/cloudinary_php: ^2.14
- laravel/nova: ^4.0
- nova-kit/nova-packages-tool: ^1.3.1
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- guzzlehttp/guzzle: ^7.0.1
- larastan/larastan: ^2.9
- laravel/pint: ^1.4.0
- mockery/mockery: ^1.5
- nova-kit/nova-devtool: ^1.0
- nunomaduro/collision: ^8.1.1||^7.10.0
- orchestra/testbench: ^6.0 || ^7.6 || ^8.0 || ^9.0
- orchestra/testbench-dusk: ^6.0 || ^7.6 || ^8.0 || ^9.0
- pestphp/pest: ^2.34
- pestphp/pest-plugin-arch: ^2.7
- pestphp/pest-plugin-laravel: ^2.3
- phpstan/extension-installer: ^1.3
- phpstan/phpstan-deprecation-rules: ^1.1
- phpstan/phpstan-phpunit: ^1.3
- spatie/laravel-ignition: ^2.4
- spatie/laravel-ray: ^1.36
This package is auto-updated.
Last update: 2024-08-28 15:35:08 UTC
README
A Cloudinary Media Library field and tool for Laravel Nova.
内容
安装
您可以通过 composer 安装此软件包
composer require bbs-lab/nova-cloudinary-field
该软件包将自动注册自己。
您可以使用以下命令发布配置文件
php artisan vendor:publish --provider="BBSLab\CloudinaryField\CloudinaryFieldServiceProvider" --tag="config"
这是发布配置文件的内容
<?php declare(strict_types=1); return [ 'default' => [ 'cloud' => env('NOVA_CLOUDINARY_DEFAULT_CLOUD'), 'username' => env('NOVA_CLOUDINARY_DEFAULT_USERNAME'), 'key' => env('NOVA_CLOUDINARY_DEFAULT_KEY'), 'secret' => env('NOVA_CLOUDINARY_DEFAULT_SECRET'), ], ];
使用
您可以在您的 Nova 资源中使用 BBSLab\CloudinaryField\Cloudinary
字段
<?php namespace App\Nova; declare(strict_types=1); namespace App\Nova; class BlogPost extends Resource { // ... public function fields(Request $request) { return [ // ... Cloudinary::make('Image'), // ... ]; } }
重要
默认情况下,该字段存储数据数组,您必须将属性强制转换为 array
。
高级使用
多选
当在您的 Nova 资源上使用 Cloudinary
字段时,您可以告诉工具允许对您的属性进行多选。
默认情况下,该工具仅允许单选。
<?php declare(strict_types=1); namespace App\Nova; use BBSLab\CloudinaryField\Cloudinary; class BlogPost extends Resource { // ... public function fields(Request $request) { return [ // ... Cloudinary::make('Image') ->multiple(), // ... ]; } }
限制选择文件的数量
您可以使用 limit
方法限制选择文件的数量。
<?php declare(strict_types=1); namespace App\Nova; use BBSLab\CloudinaryField\Cloudinary; class BlogPost extends Resource { // ... public function fields(Request $request) { return [ // ... Cloudinary::make('Image') ->multiple() ->limit(10), // ... ]; } }
按需配置
您可以使用以下方法在字段上设置一些配置
cloud(string $cloud)
: 设置云名称。username(string $username)
: 设置用户名。key(string $key)
: 设置 API 密钥。secret(string $secret)
: 设置 API 密钥。
此外,您还可以使用 configureUsing
方法在字段上设置配置
<?php declare(strict_types=1); namespace App\Nova; use BBSLab\CloudinaryField\Cloudinary;use Laravel\Nova\Http\Requests\NovaRequest; class BlogPost extends Resource { // ... public function fields(Request $request) { return [ // ... Cloudinary::make('Image') ->configureUsing(function (NovaRequest $request) { return [ 'cloud' => 'my_cloud', 'username' => 'my_username', 'key' => 'my_key', 'secret' => 'my_secret', ]; }); // ... ]; } }
依赖字段
您可以使用 dependsOn
方法根据另一个字段的值有条件地显示字段。请参见以下示例
<?php declare(strict_types=1); namespace App\Nova; use BBSLab\CloudinaryField\Cloudinary; use Laravel\Nova\Fields\Boolean; use Laravel\Nova\Fields\FormData; use Laravel\Nova\Fields\ID; use Laravel\Nova\Fields\Text; use Laravel\Nova\Http\Requests\NovaRequest; class BlogPost extends Resource { // ... public function fields(NovaRequest $request): array { return [ ID::make()->sortable(), Text::make('Title') ->sortable() ->rules('required', 'max:255'), Boolean::make('Has Image') ->sortable() ->rules('required'), Cloudinary::make('Image') ->rules('nullable') ->fullWidth() ->hide() ->dependsOn('has_image', function (Cloudinary $field, NovaRequest $request, FormData $formData) { if ($formData->has_content) { $field ->show() ->rules('required'); } else { $field->hide(); } }), ]; } }
提示
有关依赖字段更详细的信息,请参阅官方文档。
工具
该软件包还提供了一种直接访问 Cloudinary 媒体库的工具。
您可以在 NovaServiceProvider
中注册此工具
<?php declare(strict_types=1); namespace App\Providers; use BBSLab\CloudinaryField\NovaCloudinary; use Laravel\Nova\NovaApplicationServiceProvider; class NovaServiceProvider extends NovaApplicationServiceProvider { // ... public function tools(): array { return [ NovaCloudinary::make(), ]; } }
截图
索引
详情
表单
工具
更新日志
有关最近更改的更多信息,请参阅 更新日志。
安全
如果您发现任何与安全相关的问题,请通过电子邮件 paris@big-boss-studio.com 联系我们,而不是使用问题跟踪器。
贡献
有关详细信息,请参阅 贡献。
致谢
许可
MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件。