vrtc / yii2-querybuilder
Extension for Yii2 Framework to work with jQuery QueryBuilder
Installs: 141
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Type:yii2-extension
Requires
- yiisoft/yii2: 2.0.*
Requires (Dev)
- phpunit/phpunit: 3.7.*
This package is not auto-updated.
Last update: 2025-06-22 09:47:14 UTC
README
This is the jQuery QueryBuilder extension for Yii 2. It encapsulates QueryBuilder component in terms of Yii widgets, and thus makes using QueryBuilder component in Yii applications extremely easy
Installation
The preferred way to install this extension is through composer.
Either run
php composer.phar require --prefer-dist vrtc/yii2-querybuilder "*"
or add
"vrtc/yii2-querybuilder": "*"
to the require section of your composer.json
file.
How to use
View:
use vrtc\querybuilder\QueryBuilderForm; <?php QueryBuilderForm::begin([ 'rules' => $rules, 'builder' => [ 'id' => 'query-builder', 'filters' => [ ['id' => 'id', 'label' => 'Id', 'type' => 'integer'], ['id' => 'name', 'label' => 'Name', 'type' => 'string'], ['id' => 'lastName', 'label' => 'Last Name', 'type' => 'string'] ] ] ])?> <?= Html::submitButton('Apply'); ?> <?= Html::resetButton('Reset'); ?> <?php QueryBuilderForm::end() ?>
Controller:
use vrtc\querybuilder\Translator; public function actionIndex() { $query = Customer::find(); $rules = Json::decode(Yii::$app->request->get('rules')); if ($rules) { $translator = new Translator($rules); $query ->andWhere($translator->where()) ->addParams($translator->params()); } $dataProvider = new ActiveDataProvider([ 'query' => $query, ]); return $this->render('index', [ 'dataProvider' => $dataProvider, 'rules' => $rules ]); }
Search Model
if (!is_null($rules) && !empty($rules['rules'])) { if ($rules) { $translator = new Translator($rules); $query->andWhere($translator->where()) ->addParams($translator->params()); } }
Search Model add method
public function getFilters() { $return[] = [ 'id' => 'quantity', 'label' => 'Количество', 'operators' => ['less', 'less_or_equal', 'equal', 'greater', 'greater_or_equal'], 'type' => 'integer', ]; $return[] = [ 'id' => 'stocks', 'label' => 'Наличие на складах', 'type' => 'string', 'input' => 'select', 'operators' => ['in', 'not_in'], 'values' => WareHouses::getWarehousesList(), ]; $return[] = [ 'id' => 'name', 'label' => 'Название', 'type' => 'string', 'operators' => ['contains', 'equal'], ]; $return[] = [ 'id' => 'category_id', 'label' => 'Категории', 'type' => 'string', 'input' => 'select', 'multiple' => true, /* 'values' => $this->categoriesList(),*/ 'plugin' => 'select2', 'pluginConfig' => [ 'data' => $this->categoriesListForAdminFilter(), 'multiple' => true, 'width' => '100%' ], 'operators' => ['in', 'not_in', 'is_null'], ]; return $return; } ```