demency / nova-tabs
Laravel Nova - 选项卡
2.1
2020-03-12 09:34 UTC
Requires
- php: >=7.1.0
- laravel/nova: *
Suggests
- demency/nova-gridder: Allows use Nova Tailwind Grid System
README
用于本地 nova 安装。
安装
您可以通过 composer 在使用 Nova 的 Laravel 应用中安装此包
composer require eminiarts/nova-tabs
用法
选项卡面板
您可以将资源的字段分组到选项卡中。
// 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
。
// 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(), ]; }
关系选项卡
您还可以将关系分组到选项卡中。请确保在您的 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') ]), ]; } }
在选项卡中组合字段和关系
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(), ]; } }
编辑视图上的选项卡
如果要在编辑视图中显示选项卡,请使用您的资源中的 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)
设置为恢复默认设置。
升级到 1.0.0
感谢 dkulyk/nova-tabs,该包变得更加简单。
- 不再需要使用特性。请从您的资源中删除所有
AvailableTabFields
特性。 - 所有内容都在
Tabs
中。不再有TabsPanel
。请删除所有TabsPanels
并根据此 README 调整您的字段。