andrewboy/search-box

该包最新版本(dev-master)没有提供许可证信息。

Laravel 管理员搜索框包。

安装: 288

依赖者: 0

建议者: 0

安全: 0

星标: 2

关注者: 1

分支: 0

开放问题: 0

语言:JavaScript

dev-master 2016-06-17 12:30 UTC

This package is not auto-updated.

Last update: 2024-09-20 21:47:39 UTC


README

这是一个 Laravel 5 包,用于创建使用 Twitter Bootstrap 的管理员搜索框。

目前处于开发阶段,不建议用于生产环境!

安装

将 bundle 添加到 composer

"andrewboy/search-box": "dev-master"

运行 composer

composer install / update

将服务提供者添加到提供者列表

'Andrewboy\SearchBox\SearchBoxServiceProvider'

发布视图、语言和公开部分

php artisan vendor:publish --provider="Andrewboy\SearchBox\SearchBoxServiceProvider"

设置 JavaScript 插件

将 JavaScript 插件添加到网站

<script src="{{asset('vendor/search-box/js/jquery.searchBox.js')}}"></script>

或添加压缩版本

<script src="{{asset('vendor/search-box/js/jquery.searchBox.min.js')}}"></script>

将插件添加到您的 JavaScript 文件

$('.searchbox').searchBox();

##JavaScript 事件

$('.searchbox').searchBox({
    itemBeforeInit(){},     //before search item init
    itemAfterInit(item){}   //after search item init
});

您有两种方式传递搜索参数

1. 在控制器中创建 'searchParams' PHP 变量并将其传递给视图

Explained in the controller section

2. 您可以通过插件传递参数

$('.searchbox').searchBox({
    params: {{ searchParams }}
});

设置模型

将特质添加到您要搜索的模型

use \Andrewboy\SearchBox\Traits\SearchTrait;

class Banner extends Eloquent
{

    use SearchTrait;

在模型中设置属性如下

protected static $searchParams = [
    'id' => [
        'type' => 'integer'
    ],
    'name' => [
        'type' => 'string'
    ],
    'url' => [
        'type' => 'string'
    ],
    'is_active' => [
        'type' => 'boolean'
    ],
    'has_attachment' => [
        'type' => 'boolean'
    ],
    'group_id'    =>  [
        'type'  =>  'list',
        'relation'  =>  ['groups', 'name']
    ],
    'group_id'    =>  [
        'type'  =>  'list',
        'values'  =>  [
            1 => 'name1',
            2 => 'name2'
        ]
    ],
    'group_id'    =>  [
        'type'  =>  'string',
        'relation'  =>  ['groups', 'name']  //search string through relation
    ],
    'created_at' => [
        'type' => 'date'
    ],
];

在模型中,扩展搜索以处理特殊情况

protected function extendSearch($query, array $params)
{
    #BANNER_PLACE_ID
    if (isset($params['banner_place_id']) && self::isValidSearchParam($params['banner_place_id'])) {
        switch ($params['banner_place_id']['operator']) {
            case '=':
                $query->whereIn('banner_place_id', $params['banner_place_id']['values']);
                break;

            case '!=':
                $query->whereNotIn('banner_place_id', $params['banner_place_id']['values']);
                break;
        }

        unset($params['banner_place_id']);
    }

    #HAS_ATTACHMENT
    if (isset($params['has_attachment']) && self::isValidSearchParam($params['has_attachment'])) {
        switch ($params['has_attachment']['operator']) {
            case '=':
                $query->has('attachment', 'LIKE', intval($params['has_attachment']['values'][0]));
                break;

            case '!=':
                $query->has('attachment', 'NOT LIKE', intval($params['has_attachment']['values'][0]));
                break;
        }

        unset($params['has_attachment']);
    }

    return $params;
}

使用模型关系,快速简单

当您想访问模型关系时,必须定义如下

    protected static $searchParams = [
        'group_id'    =>  [
            'type'  =>  'list',
            'relation'  =>  ['groups', 'name']
        ],
    ];

其中类型设置为 'list'

关系通过

[
    [relation_method_name],
    [attribute_name_which_you_want_to_use_in_dropdown]
]

设置控制器

在控制器中传递搜索参数

$extended = []; //you don't have to use it, if it's empty

return View::make('banners.index', array('banners' => $banners))
    ->with(
        'searchParams', 
        Banner::getSearchSet(
            route("banners.index"),
            $extended
        )
    )

在控制器中,您可以扩展之前填充的搜索设置

$extended = [
    'banner_place_id'    =>  [
        'type'      =>  'list',
        'values'    =>  Banner::$bannerPlaces
    ]
];

在控制器中,您可以使用它进行搜索

$banners = Banner::search(Input::all());

设置语言

默认语言设置为 hu, en

您可以在 'resources/lang/vendor/search-box' 中扩展语言

设置视图

插入视图

@include('search-box::searchBox')

内置过滤器

整数

运算符:等于 (=),不等于 (!=),大于等于 (>=),小于等于 (<=),(><)

日期

运算符:等于 (=),大于等于 (>=),小于等于 (<=),不等于 (><)

字符串

运算符:包含 (), 不包含 (!)

布尔值

运算符:真 (!!1),假 (!!0)

列表

运算符:等于 (=),不等于 (!=)

记录如何发布代码的部分等。

##选项

"getSearchSet" 方法的第三个参数是选项参数。参数类型为数组。

###缓存

'is_caching'    =>  true