kraenkvisuell/nova-tabs

Laravel Nova - 标签页

安装: 0

依赖者: 1

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 139

语言:Vue

v2.0.1 2020-08-27 16:01 UTC

README

Latest Version on Github

这是一个从 https://github.com/eminiarts/nova-tabs 分支出来的版本。所有关于这个包的功劳都归功于他们。

我们只是因为该仓库的开发似乎已经停止,并且我们需要进行一些紧急更改,所以我们才分叉了它。不过,我们打算维护这个包,当我们对其状态满意时,我们可能会将其放在 novapackages 上(作为另一个 Laravel Nova 标签页包)。

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

安装

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

composer require kraenkvisuell/nova-tabs

使用

标签面板

image

您可以将资源的字段分组到标签中。

// in app/Nova/Resource.php

use Kraenkvisuell\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 Kraenkvisuell\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 Kraenkvisuell\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 Kraenkvisuell\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 Kraenkvisuell\Tabs\Tabs;
use Kraenkvisuell\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 Kraenkvisuell\Tabs\Tabs;
use Kraenkvisuell\Tabs\TabsOnEdit; // Add this Trait

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

自定义

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

// in app/Nova/Resource.php

use Kraenkvisuell\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 调整您的字段。