andrewboy / search-box
该包最新版本(dev-master)没有提供许可证信息。
Laravel 管理员搜索框包。
dev-master
2016-06-17 12:30 UTC
Requires
- php: >=5.5.9
- illuminate/support: >5.0
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