leandrogehlen / yii2-querybuilder
Extension for Yii2 Framework to work with jQuery QueryBuilder
Installs: 44 198
Dependents: 0
Suggesters: 0
Security: 0
Stars: 41
Watchers: 11
Forks: 31
Open Issues: 1
Type:yii2-extension
Requires
- bower-asset/jquery-querybuilder: ~2.4.0
- solutosoft/yii2-plugin: ~1.0.0
- yiisoft/yii2: ~2.0.0
Requires (Dev)
- phpunit/phpunit: 4.8.27 || ^5.0 || ^6.0 || ^7.0
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 leandrogehlen/yii2-querybuilder "*"
or add
"leandrogehlen/yii2-querybuilder": "*"
to the require section of your composer.json
file.
How to use
The extension depends the bootstrap css then is necessary adds it in AppAsset
:
class AppAsset extends AssetBundle { ... public $depends = [ ... 'yii\bootstrap\BootstrapAsset', // or 'yii\bootstrap4\BootstrapAsset' ]; }
View:
use leandrogehlen\querybuilder\QueryBuilderForm; <?php QueryBuilderForm::begin([ 'rules' => $rules, 'builder' => [ 'id' => 'query-builder', 'pluginOptions' => [ '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 leandrogehlen\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 ]); }