d8vjork/nova-tabs

Laravel Nova - 标签页

维护者

详细信息

github.com/d8vjork/nova-tabs

源代码

安装: 5

依赖者: 0

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 139

语言:Vue

v1.0.6 2019-08-16 23:37 UTC

README

Latest Version on Github

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