aedart / athenaeum-filters
基于HTTP查询参数的搜索过滤器实用程序
8.10.0
2024-09-23 07:54 UTC
Requires
- php: ^8.2
- aedart/athenaeum-contracts: ^8.10
- aedart/athenaeum-database: ^8.10
- aedart/athenaeum-support: ^8.10
- aedart/athenaeum-utils: ^8.10
- aedart/athenaeum-validation: ^8.10
- illuminate/http: ^v11.23.5
- illuminate/pipeline: ^v11.23.5
- dev-main
- 8.10.0
- 8.9.0
- 8.8.0
- 8.7.0
- 8.6.0
- 8.5.0
- 8.4.0
- 8.3.0
- 8.2.0
- 8.1.0
- 8.0.0
- 7.33.0
- 7.32.0
- 7.31.0
- 7.30.1
- 7.30.0
- 7.29.0
- 7.28.0
- 7.27.0
- 7.26.0
- 7.25.0
- 7.24.0
- 7.23.0
- 7.22.1
- 7.22.0
- 7.21.0
- 7.20.0
- 7.19.0
- 7.18.1
- 7.18.0
- 7.17.0
- 7.16.0
- 7.15.0
- 7.14.0
- 7.13.0
- 7.12.0
- 7.11.3
- 7.11.2
- 7.11.1
- 7.11.0
- 7.10.1
- 7.10.0
- 7.9.1
- 7.9.0
- 7.8.0
- 7.7.2
- 7.7.1
- 7.7.0
- 7.6.0
- 7.5.0
- 7.4.0
- 7.3.0
- 7.2.0
- 7.1.0
- 7.0.1
- 7.0.0
- 7.0.0-alpha.1
- 6.8.1
- 6.8.0
- 6.7.0
- 6.6.0
- 6.5.2
- 6.5.1
- 6.5.0
- 6.4.0
- 6.3.0
- 6.2.1
- 6.2.0
- 6.1.1
- 6.1.0
- 6.0.2
- 6.0.1
- 6.0.0
- 5.27.0
- 5.26.0
- 5.25.0
- 5.24.2
- 5.24.1
- 5.24.0
- 5.23.0
- 5.22.4
- 5.22.3
- 5.22.2
- 5.22.1
- 5.22.0
This package is auto-updated.
Last update: 2024-09-23 07:55:55 UTC
README
提供了一种创建基于接收到的HTTP查询参数的搜索和约束查询过滤器的途径,适用于您的 Laravel 应用程序。
示例
您的自定义过滤器构建器
通过扩展 BaseBuilder
抽象,您可以封装一个自定义的过滤器构建器。每当匹配到HTTP查询参数时,就会调用相应的“处理器”,负责创建一个或多个查询过滤器。
namespace Acme\Filters; use Aedart\Filters\BaseBuilder; use Acme\Filters\Processors\MySearchProcessor; use Acme\Filters\Processors\TextProcessor; use Acme\Filters\Processors\DateProcessor; use Acme\Filters\Processors\SortProcessor; class UserFilterBuilder extends BaseBuilder { public function processors(): array { // Key = http query parameter, value = parameter processor... return [ 'search' => MySearchProcessor::make(), 'name' => TextProcessor::make(), 'created_at' => DateProcessor::make(), 'sort' => SortProcessor::make() ->force(), // ...etc ]; } }
在您的请求中
要使用您的自定义过滤器构建器,在请求中创建一个新的实例,例如在 验证后钩子 中。
namespace Acme\Requests; use Illuminate\Foundation\Http\FormRequest; use Aedart\Contracts\Filters\BuiltFiltersMap; use Acme\Filters\UserFilterBuilder; class ListUsersRequest exends FormRequest { public ?BuiltFiltersMap $filters = null; public function after(Validator $validator) { // Add filters using your custom builder $this->filters = UserFilterBuilder::make($this) ->build(); } // ... remaining not shown ... }
在您的控制器中
最后,直接在您的模型上应用过滤器。
use App\Http\Controllers\Controller; use App\Models\User; use Acme\Requests\ListUsersRequest; class UsersController extends Controller { public function index(ListUsersRequest $request) { // Apply all requested filters... return User::applyFilters($request->filters->all()) ->paginate(10); ); } }
官方文档
请阅读 官方文档 获取更多信息。
单一代码库位于 github.com/aedart/athenaeum
版本控制
此包遵循 语义版本控制 2.0.0
许可
BSD-3-Clause,请阅读本包中包含的 LICENSE 文件