web-id / nova-tabs-multiple-relation
Laravel Nova - 标签页.
v1.2.4
2020-10-19 11:32 UTC
Requires
- php: >=7.1.0
- laravel/nova: >=2.9.0
This package is auto-updated.
Last update: 2024-09-23 12:56:03 UTC
README
安装
您可以通过 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(), ]; }
关系标签页
// 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 调整您的字段。