khoaduyetquocvuon/nova-mediable-manager

一个 Laravel Nova 可媒体管理的工具和字段。

dev-master 2023-06-24 05:22 UTC

This package is auto-updated.

Last update: 2024-09-24 08:01:02 UTC


README

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

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

目录

Manager

安装

composer require naska-it/nova-mediable-manager
php artisan vendor:publish --provider="Khoahuynhvietswiss\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 \Khoahuynhvietswiss\NovaMediableManager\NovaMediableManager
    ];
}

使用字段 - 首先为您的模型添加HasMedia特质

use Khoahuynhvietswiss\NovaMediableManager\HasMedia;

class Page extends Model
{
    use HasMedia;

使用字段 - Nova 资源

use Khoahuynhvietswiss\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 Khoahuynhvietswiss\NovaMediableManager\Mediable;

public function fields()
{
    return [
        Text::make('Headline'),
        Text::make('Slogan'),
        Mediable::make('Block')
        	->isSingle()
        	->isFlexible(),
    ];
}

为您的布局添加HasFlexibleMediable特质

use Khoahuynhvietswiss\NovaMediableManager\HasFlexibleMediable;

class BlockLayout extends Layout
{
    use HasFlexibleMediable;

致谢

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

替代方案

我之前使用的

示例

Manager

Field