锤石 / 精炼-诺瓦
Refine查询构建器的Laravel Nova集成。
v0.2.4
2023-10-13 04:04 UTC
Requires
- php: ^7.2|^8.0
- hammerstone/refine-laravel: ^0.3.4|^0.4.0
- laravel/nova: ^2.12|^3.0|^4.0
README
Refine 是一个强大的、可视化的Laravel Nova 3和4查询构建器。Refine是一个付费包,您可以在hammerstone.dev购买。
我们还在hammerstone.dev提供了Laravel(没有Nova)和Ruby on Rails的库。
Refine允许您为每个资源定义可筛选的条件,然后您的用户可以任意组合它们以找到他们想要的确切内容。
// Create a filter called "UserFilter" class UserFilter extends Filter { public function conditions() { return [ // Number condition on the ID column NumericCondition::make('id', 'ID'), // Text condition on the name column TextCondition::make('name', 'Name'), // Boolean condition on the is_subscriber column BooleanCondition::make('is_subscriber', 'Subscriber'), // Option condition on the referral column OptionCondition::make('referral', 'Referral Source') ->options([ 'twitter' => 'Twitter', 'linkedin' => 'LinkedIn', 'fb' => 'Facebook' ]), // Date condition on the created_at column DateWithTimeCondition::make('created_at', 'Created At'), ]; } }
安装
要使用Refine与Nova,您必须首先要求安装包composer require hammerstone/refine-nova
。这将安装hammerstone/refine-laravel
。由于refine-laravel
是一个付费包,您需要确保在auth.json
文件中提供凭证。
集成
在您的app\Filters
目录中创建一个UserFilter
类。
namespace App\Filters; use Hammerstone\Refine\Conditions\NumericCondition; use Hammerstone\Refine\Filter; class UserFilter extends Filter { public function conditions() { return [ NumericCondition::make('id', 'ID'), // @TODO: Add more conditions ]; } }
在您的app\Nova\User
文件中,您需要添加RefinesModels
特性和引用您刚刚创建的筛选器。
use App\Filters\UserFilter; use Hammerstone\Refine\Nova\RefinesModels; class User extends Resource { use RefinesModels; // ... public static $filter = UserFilter::class; }
最后,为了在前端显示查询构建器,您需要添加Refine卡片
public function cards(Request $request) { return [ static::refineCard() ]; }
这就完成了!您应该在Nova的用户页面上看到Refine查询构建器。您可以在Refine文档中阅读有关构建筛选器的更多文档。