pixelcreation / nova-field-sortable
A Nova field for ordering resources.
3.2.0
2022-05-17 11:55 UTC
Requires
- php: >=8.0
- laravel/nova: ^4.0
- spatie/eloquent-sortable: ^4.0
README
Description
This field adds reordering functionality to your resource's index using the awesome eloquent-sortable package by the great people of Spatie.
This package is a fork of Teatrante/nova-field-sortable, which is a fork of the original package Naxon/nova-field-sortable. It includes improvements to the layout
Requirements
- Nova 4
- spatie/eloquent-sortable (If not already installed, this package will install if for you and all you have to do is follow the installation instructions).
Installation
This package can be installed through Composer.
composer require pixelcreation/nova-field-sortable
Upgrading from v3.x to v4.x
- Instead of the primary key column, you'll need to supply the name of the sort column in the
Sortable
field.
Usage
- Follow the usage instructions on the eloquent-sortable repository to make your model sortable.
- Use the
PixelCreation\NovaFieldSortable\Concerns\SortsIndexEntries
trait in your Nova Resource. - Add a public static property called
$defaultSortField
to your resource, containing your sorting column (I recommend adding it in your mainapp/Nova/Resource.php
file). - Add the
PixelCreation\NovaFieldSortable\Sortable
field to your Nova Resourcefields
method, using a label and your sorting column.
Example
<?php namespace App\Nova; use Laravel\Nova\Fields\ID; use Laravel\Nova\Http\Requests\NovaRequest; use Laravel\Nova\Fields\Text; use PixelCreation\NovaFieldSortable\Concerns\SortsIndexEntries; use PixelCreation\NovaFieldSortable\Sortable; class Page extends Resource { use SortsIndexEntries; public static $defaultSortField = 'sort_order'; /** * Get the fields displayed by the resource. * * @param NovaRequest $request * @return array */ public function fields(Request $request) { return [ ID::make()->sortable(), Text::make('Title'), Sortable::make('Order', 'sort_order') ->onlyOnIndex(), ]; } }
Credits
License
The MIT License (MIT). Please see License File for more information.