This field adds reordering functionality to your resource's index using the awesome eloquent-sortable package by the great people of Spatie.
- Laravel 5.6+ with Nova.
- 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).
This package can be installed through Composer.
composer require naxon/nova-field-sortable
- Follow the usage instructions on the eloquent-sortable repository to make your model sortable.
- Use the
Naxon\NovaFieldSortable\Concerns\SortsIndexEntries
trait in your Nova Resource. - Add a public static property called
$defaultSortField
to your resource, containing your sorting column (I recomment adding it in your mainapp/Nova/Resource.php
file). - Add the
Naxon\NovaFieldSortable\Sortable
field to your Nova Resourcefields
method, using a label and your primary key column.
<?php
namespace App\Nova;
use Laravel\Nova\Fields\ID;
use Illuminate\Http\Request;
use Laravel\Nova\Http\Requests\NovaRequest;
use Laravel\Nova\Fields\Text;
use Naxon\NovaFieldSortable\Concerns\SortsIndexEntries;
use Naxon\NovaFieldSortable\Sortable;
class Page extends Resource
{
use SortsIndexEntries;
public static $defaultSortField = 'sort_order';
/**
* Get the fields displayed by the resource.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function fields(Request $request)
{
return [
ID::make()->sortable(),
Text::make('Title'),
Sortable::make('Order', 'id')
->onlyOnIndex(),
];
}
}
If you discover any security related issues, please email [email protected] instead of using the issue tracker.
The MIT License (MIT). Please see License File for more information.