d8vjork / nova-tabs
Laravel Nova - 标签页
v1.0.6
2019-08-16 23:37 UTC
Requires
- php: >=7.1.0
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(), ]; }
关联标签
您还可以将关系分组到标签中。请确保在您的 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 调整您的字段。