ravaelles / filterable
Laravel 5.* 处理记录过滤的包
Requires
- php: >=5.3.0
- illuminate/support: ~5.1
Requires (Dev)
- phpunit/phpunit: 4.*
- scrutinizer/ocular: ~1.1
This package is not auto-updated.
Last update: 2024-09-21 18:02:48 UTC
README
处理Laravel 5.*中记录过滤的包,准备与MongoDB一起工作。
轻松定义过滤器。通过使用提供的bootstrap视图,可以显示所有过滤器并正确地样式化选择元素(以及更多!)。哦,还有一个很棒的搜索框! :)
安装
通过Composer
$ composer require ravaelles/filterable
用法
(1) 打开 config/app.php
并在providers的末尾添加此条目
\Ravaelles\Filterable\FilterableServiceProvider::class,
(2) 现在在项目根目录下打开命令行并发布视图
php artisan vendor:publish
您可以自由修改它,现在它在 resources\views\packages\filterable\filtering.blade.php
(3) 注意到 filtering.blade.php
使用了 @push('scripts')
操作符。它将所有javascript脚本追加到html的末尾,当jQuery已经被加载以避免 jQuery is not defined
错误。为了使其工作,请添加 @stack('scripts')
部分在您使用 <script>
标签加载最后一个脚本之后。注意,@stack
blade操作符自Laravel 5.2.20以来可用。
(4) 现在在您的模型中添加此特性
use Ravaelles\Filterable\Filterable as Filterable; (..) class MyModelName extends Model { use Filterable; // Add trait
您想要可过滤的每个模型都需要此特性。
(5) 现在是定义要使用的过滤器的时候了(变量 $filters
)。我们将定义一些示例过滤器,以便您可以了解它是如何工作的。在您的控制器中,就在您检索记录的地方,添加以下内容
$filters = [ // First filter 'status' => [ // Db field name 'Status' => [ // Field name to be shown for user 1 => "Created", // [Values => Display names] for select element 2 => "Awaiting signature", 3 => "Canceled", 4 => "Signed", ] ], // Second filter 'template_id' => [ 'Template' => [0 => "No", 1 => "Yes"] // 'Template' => Template::orderBy('id', -1)->pluck('name', 'id')->all() // Or use something like this ], // You can add more filters here //'field_name' => [ // 'Display name' => ["black" => "Black tea", "green" => "Green tea"] //], ]; $users = User::orderBy('id') ->filterable($filters) ->paginate(10);
注意,您可以在 ->filterable
部分之前应用自己的,自定义的 where
子句。
(6) 最后,在您的视图中添加以下行,它将自动使用选择显示过滤器
@include('vendor.filterable.filtering')
您可以随意修改此文件。
(7) 如果您想使用搜索框功能,请确保在控制器中添加 ->searchable()
行,如下所示
$users = User::orderBy('id') ->searchable() ->filterable($filters) ->paginate(10);
...并在您的模型中添加一个您想要搜索的字段列表,例如。
public $searchable = [ 'name', 'email', 'address' ];
它将在这些字段中的任何字段中搜索搜索框中的文本。
(8) 您现在可以使用此包并动态过滤记录! :)
许可协议
MIT许可(MIT)。请参阅许可文件以获取更多信息。