Package Data | |
---|---|
Maintainer Username: | andrewboy |
Maintainer Contact: | andras.jozsef.beck@gmail.com (Beck András) |
Package Create Date: | 2015-09-11 |
Package Last Update: | 2016-06-17 |
Language: | JavaScript |
License: | Unknown |
Last Refreshed: | 2024-11-19 03:08:18 |
Package Statistics | |
---|---|
Total Downloads: | 288 |
Monthly Downloads: | 0 |
Daily Downloads: | 0 |
Total Stars: | 2 |
Total Watchers: | 1 |
Total Forks: | 0 |
Total Open Issues: | 0 |
This is a Laravel 5 package, that creates a searcbox for admin pages that uses Twitter Bootstrap.
It's under development, not recommended for production use!
add bundle to composer:
"andrewboy/search-box": "dev-master"
run composer:
composer install / update
add service provider to the providers list:
'Andrewboy\SearchBox\SearchBoxServiceProvider'
publish view, langs and public parts:
php artisan vendor:publish --provider="Andrewboy\SearchBox\SearchBoxServiceProvider"
add javascript plugin to the site
<script src="{{asset('vendor/search-box/js/jquery.searchBox.js')}}"></script>
or the minified version
<script src="{{asset('vendor/search-box/js/jquery.searchBox.min.js')}}"></script>
add plugin to your javascript file
$('.searchbox').searchBox();
##Javascript events
$('.searchbox').searchBox({
itemBeforeInit(){}, //before search item init
itemAfterInit(item){} //after search item init
});
You have two choice to pass the search params
Explained in the controller section
$('.searchbox').searchBox({
params: {{ searchParams }}
});
add the trait to your models that you want to search
use \Andrewboy\SearchBox\Traits\SearchTrait;
class Banner extends Eloquent
{
use SearchTrait;
in the model set the attributes like:
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'
],
];
in the model, extend the search for special cases
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;
}
when you want to reach the models' relations, the you have to define like this
protected static $searchParams = [
'group_id' => [
'type' => 'list',
'relation' => ['groups', 'name']
],
];
where the type is set to 'list'
the relation is set by
[
[relation_method_name],
[attribute_name_which_you_want_to_use_in_dropdown]
]
in the controller, pass the search params:
$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
)
)
in the controller you can extend the previosly filled search settings:
$extended = [
'banner_place_id' => [
'type' => 'list',
'values' => Banner::$bannerPlaces
]
];
in the controller, you can use it to search
$banners = Banner::search(Input::all());
default language set is hu, en
you can extend the language in 'resources/lang/vendor/search-box'
to insert the view
@include('search-box::searchBox')
Operators: equals (=), not equals (!=), greater than or equal (>=), less than or equal (<=), (><),
Operators: equals (=), greater than or equal (>=), less than or equal (<=), not equal (><)
Operators: contains (~), not contains (!~)
Operators: true (!!1), false (!!0)
Operators: equals (=), not equals (!=)
write down how to publish the parts of the code etc.
##Options
The "getSearchSet" method 3rd parameter is the options parameter. The type of the parameter is array.
###Caching
'is_caching' => true