max26292/nova-mediable-manager

Laravel Nova多媒体管理工具和字段。

v1.0.3 2023-06-23 05:03 UTC

This package is auto-updated.

Last update: 2024-09-23 07:43:18 UTC


README

此包仍在积极开发中,请勿在生产环境中使用

Laravel Nova媒体管理器和字段,用于管理多态的多对多关系。

目录

Manager

安装

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中检查一些额外的配置:启用Manager,添加到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;

鸣谢

我从哪里得到一些代码:)

替代方案

我之前使用的

示例

Manager

Field