demency / nova-tabs

Laravel Nova - 选项卡

安装: 14

依赖者: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 139

语言:Vue

2.1 2020-03-12 09:34 UTC

README

Latest Version on Github

用于本地 nova 安装。

  1. 安装
  2. 用法
    1. 选项卡面板
    2. 带工具栏的选项卡面板
    3. 关系选项卡
    4. 在选项卡中组合字段和关系
    5. 选项卡中的操作
    6. 编辑视图上的选项卡
  3. 自定义
  4. 升级到 1.0.0

安装

您可以通过 composer 在使用 Nova 的 Laravel 应用中安装此包

composer require eminiarts/nova-tabs

用法

选项卡面板

image

您可以将资源的字段分组到选项卡中。

// in app/Nova/Resource.php

use Eminiarts\Tabs\Tabs;

public function fields()
{
    return [

        new Tabs('Tabs', [
            'Balance'    => [
                Number::make('Balance', 'balance'),
                Number::make('Total', 'total'),
            ],
            'Other Info' => [
                Number::make('Paid To Date', 'paid_to_date'),
            ],
        ]),

    ];
}

带工具栏的选项卡

如果您只使用选项卡而没有其他默认面板,可以将 withToolbar 设置为 true

image

// in app/Nova/Resource.php

use Eminiarts\Tabs\Tabs;

public function fields(Request $request)
    {
        return [

            (new Tabs('Contact Details', [
                'Address' => [
                    ID::make('Id', 'id')->rules('required'),
                    Text::make('Email', 'email')->sortable(),
                    Text::make('Phone', 'phone')->sortable(),
                ],

                'Relations' => [
                    BelongsTo::make('User'),
                    MorphTo::make('Contactable')->types([
                        Client::class,
                        Invoice::class,
                    ]),
                ]
            ]))->withToolbar(),

        ];
    }

关系选项卡

image

您还可以将关系分组到选项卡中。请确保在您的 Nova 资源中使用 AvailableTabFields 特性。

// in app/Nova/Resource.php

use Eminiarts\Tabs\Tabs;

class User extends Resource
{
    public function fields(Request $request)
    {
        return [
            
           new Tabs('Relations', [
                HasMany::make('Invoices'),
                HasMany::make('Notes'),
                HasMany::make('Contacts')
            ]),

        ];
    }

}

在选项卡中组合字段和关系

image

image

use Eminiarts\Tabs\Tabs;

public function fields(Request $request)
{
    return [

        (new Tabs(__('Client Custom Details'), [
            new Panel(__('Details'), [
                    ID::make('Id', 'id')->rules('required')->hideFromIndex(),
                    Text::make('Name', 'name'),
            ]),
            HasMany::make('Invoices')
        ])

    ];
}

选项卡中的操作

如果您的模型使用了 Laravel\Nova\Actions\Actionable 特性,您可以将操作放入一个选项卡中,如下所示

// in app/Nova/Resource.php

use Eminiarts\Tabs\Tabs;
use Eminiarts\Tabs\ActionsInTabs; // Add this Trait
use Laravel\Nova\Actions\ActionResource; // Import the Resource

class Client extends Resource
{
    use ActionsInTabs; // Use this Trait

    public function fields(Request $request)
    {
        return [
            
            (new Tabs('Client Custom Details', [
                'Address'  => [
                    ID::make('Id', 'id'),
                    Text::make('Name', 'name')->hideFromDetail(),
                ],
                'Invoices' => [
                    HasMany::make('Invoices'),
                ],
                'Actions'  => [
                    MorphMany::make(__('Actions'), 'actions', ActionResource::class), // Acc Actions whererver you like.
                ],
            ]))->withToolbar(),

        ];
    }
}

编辑视图上的选项卡

image

如果要在编辑视图中显示选项卡,请使用您的资源中的 TabsOnEdit 特性。

// in app/Nova/Resource.php

use Eminiarts\Tabs\Tabs;
use Eminiarts\Tabs\TabsOnEdit; // Add this Trait

class Client extends Resource
{
    use TabsOnEdit; // Use this Trait
    //...
}

自定义

默认情况下,选项卡组件会将搜索输入和创建按钮移动到选项卡中。如果您有很多选项卡,可以将它们移回自己的行

// in app/Nova/Resource.php

use Eminiarts\Tabs\Tabs;

class User extends Resource
{

    public function fields(Request $request)
    {
        return [
            
            (new Tabs('Relations', [
                HasMany::make('Invoices')
            ]))->defaultSearch(true),

        ];
    }
}

->defaultSearch(true) 设置为恢复默认设置。

image

升级到 1.0.0

感谢 dkulyk/nova-tabs,该包变得更加简单。

  • 不再需要使用特性。请从您的资源中删除所有 AvailableTabFields 特性。
  • 所有内容都在 Tabs 中。不再有 TabsPanel。请删除所有 TabsPanels 并根据此 README 调整您的字段。