MiniCodeMonkey / refine-nova

A Laravel Nova integration for the Refine query builder.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Refine for Laravel Nova

Refine is a powerful, visual query builder for Laravel (and Rails!)

This repository is the integration for Refine and Laravel Nova.

Refine is a paid package, currently in early access. If you would like to try it out, please send me an email at aaron@hammerstone.dev or DM me on Twitter.

Refine Nova

Installation

To use Refine with Nova, you must first require the package composer require hammerstone/refine-nova. This will install hammerstone/refine-laravel as well.

Integration

To use Refine with one of your Nova resources, add the RefinesModels trait to your resource.

class Company extends Resource
{
    use RefinesModels;
}

In your AppServiceProvider (or FilterServiceProvider if you want) you'll need to tell Refine to use the Vue2 frontend.

public function boot()
{
    Clause::$resolveComponentUsing = Vue2Frontend::class;
}

This will require you to implement a single method called refineFilter. From this method you will return the filter that applies to this resource. (To learn more about creating filters, see the Refine documentation.)

public static function refineFilter(NovaRequest $request)
{
    // The filter to use for this resource. 
    return CompanyFilter::class;
}

To accomplish the actual filtering, you'll want to modify the indexQuery method to activate the Refine filter:

public static function indexQuery(NovaRequest $request, $query)
{
    // Run this request + query through Refine.
    static::refine($request, $query);
}

Finally, to show the builder on the frontend, you'll need to add the Refine card.

public function cards(Request $request)
{
    return [
        RefineCard::forFilter(static::refineFilter($request))
    ];
}

That's all you need to do!

About

A Laravel Nova integration for the Refine query builder.


Languages

Language:Vue 50.6%Language:JavaScript 29.4%Language:CSS 14.6%Language:PHP 5.4%