chiwex/nova-tabss

Laravel Nova - 标签页.

1.4.4 2021-03-29 19:05 UTC

README

Nova Tabs, awesome resource tabs for Nova

Latest Version on Github

  1. 安装
  2. 用法
    1. 标签面板
    2. 带工具栏的标签面板
    3. 关系标签页
    4. 在标签页中组合字段和关系
    5. 标签页中的操作
    6. 编辑视图中的标签页
  3. 标签对象
  4. 自定义
    1. 标签
    2. 默认搜索
    3. 显示超过5个项目
  5. 升级到1.0.0

安装

您可以通过composer将此包安装到使用Nova的Laravel应用程序中

composer require eminiarts/nova-tabs

用法

标签面板

image

您可以将资源字段分组到标签页中,您可以使用数组或标签对象(自1.4.0版起):

// 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'),
            ],
        ]),

    ];
}

// in app/Nova/Resource.php

use Eminiarts\Tabs\Tabs;
use Eminiarts\Tabs\Tab;

public function fields()
{
    return [
        Tabs::make('Tabs', [
            Tab::make('Balance', [
                Number::make('Balance', 'balance'),
                Number::make('Total', 'total'),
            ]),
            Tab::make('Other Info', [
                Number::make('Paid To Date', 'paid_to_date')
            ]),
        ]),

    ];
}

带工具栏的标签页

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

image

// in app/Nova/Resource.php

use Eminiarts\Tabs\Tabs;
use Eminiarts\Tabs\Tab;

public function fields(Request $request)
{
    return [
        Tabs::make('Contact Details', [
            Tab::make('Address', [
                ID::make('Id', 'id')->rules('required'),
                Text::make('Email', 'email')->sortable(),
                Text::make('Phone', 'phone')->sortable(),
            ]),
            Tab::make('Relations', [
                BelongsTo::make('User'),
                MorphTo::make('Contactable')->types([
                    Client::class,
                    Invoice::class,
                ]),
            ]),
        ])->withToolbar(),
    ];
}

关系标签页

image

// in app/Nova/Resource.php

use Eminiarts\Tabs\Tabs;

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

        ];
    }
}

在标签页中组合字段和关系

image

image

use Eminiarts\Tabs\Tabs;

public function fields(Request $request)
{
    return [
        Tabs::make(__('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\Tab;
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 [
            Tabs::make('Client Custom Details', [
                Tab::make('Address', [
                    ID::make('Id', 'id'),
                    Text::make('Name', 'name')->hideFromDetail(),
                ]),
                Tab::make('Invoices', [
                    HasMany::make('Invoices'),
                ]),
                Tab::make('Actions', [
                    $this->actionfield(), // Add 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
    //...
}

标签对象

自v1.4.0版起,可以使用Tab类代替数组来表示您的标签页。

自定义

默认搜索

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

// in app/Nova/Resource.php

use Eminiarts\Tabs\Tabs;

class User extends Resource
{

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

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

image

显示超过5个项目

默认情况下,任何HasManyBelongsToManyMorphMany字段在它们的索引中显示5个项目。您可以使用Nova的内置静态属性$perPageViaRelationship在相应的资源中显示更多(或更少)。

升级到1.0.0

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

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

鸣谢

横幅由https://banners.beyondco.de/创建