naska-it / nova-mediable-manager
一个Laravel Nova的可媒体管理工具和字段。
1.1
2020-10-16 12:51 UTC
Requires
- php: >=7.1.0
- intervention/image: ^2.5
- laravel/framework: ~5.8.0|^6.0|^7.0|^8.0
This package is auto-updated.
Last update: 2024-09-16 21:04:58 UTC
README
此包仍在积极开发中,请勿在生产环境中使用
Laravel Nova媒体管理器和字段,用于管理多态的多对多关系。
目录
安装
composer require naska-it/nova-mediable-manager
php artisan vendor:publish --provider="NaskaIt\NovaMediableManager\ToolServiceProvider"
php artisan migrate
php artisan storage:link
配置
在config/nova-mediable-manager.php中检查一些额外的配置,启用管理器,添加到app/Providers/NovaServiceProvider.php
/** * Get the tools that should be listed in the Nova sidebar. * * @return array */ public function tools() { return [ new \NaskaIt\NovaMediableManager\NovaMediableManager ]; }
使用字段 - 首先给你的模型添加HasMedia特性
use NaskaIt\NovaMediableManager\HasMedia; class Page extends Model { use HasMedia;
使用字段 - Nova资源
use NaskaIt\NovaMediableManager\Mediable; class Page extends Resource { /** * Get the fields displayed by the resource. * * @param \Illuminate\Http\Request $request * @return array */ public function fields(Request $request) { return [ ID::make(__('ID'), 'id')->sortable(), Text::make('Name'), Trix::make('Body'), Mediable::make('Image') ->hideFromIndex() ->isSingle(), Mediable::make('Featured') ->isSingle(), Mediable::make('Gallery'), ]; }
灵活
如果你在灵活布局中使用Mediable字段
use NaskaIt\NovaMediableManager\Mediable; public function fields() { return [ Text::make('Headline'), Text::make('Slogan'), Mediable::make('Block') ->isSingle() ->isFlexible(), ]; }
添加HasFlexibleMediable特性到你的布局中
use NaskaIt\NovaMediableManager\HasFlexibleMediable; class BlockLayout extends Layout { use HasFlexibleMediable;
致谢
我从中获取了一些代码 :)
替代方案
我之前使用过