leandrogehlen/yii2-querybuilder

此包已被废弃且不再维护。没有建议的替代包。

Yii2 框架扩展,用于与 jQuery QueryBuilder 一起工作

安装次数: 42,739

依赖者: 0

建议者: 0

安全: 0

星星: 41

关注者: 11

分支: 31

开放问题: 1

类型:yii2-extension

1.0.4 2021-05-25 19:16 UTC

This package is auto-updated.

Last update: 2023-10-29 01:51:00 UTC


README

这是为 Yii 2 定制的 jQuery QueryBuilder 扩展。它以 Yii 小部件的形式封装了 QueryBuilder 组件,因此在 Yii 应用程序中使用 QueryBuilder 组件变得非常简单

Yii2 Latest Stable Version Scrutinizer Code Quality Code Coverage Build Status Code Climate Total Downloads

安装

安装此扩展的最佳方式是通过 composer

运行以下命令之一:

php composer.phar require --prefer-dist leandrogehlen/yii2-querybuilder "*"

"leandrogehlen/yii2-querybuilder": "*"

将以下内容添加到您的 composer.json 文件的 require 部分:

如何使用

此扩展依赖于 bootstrap css,因此需要在 AppAsset 中添加它

class AppAsset extends AssetBundle {

    ...

    public $depends = [
        ...
        'yii\bootstrap\BootstrapAsset', // or 'yii\bootstrap4\BootstrapAsset'
    ];

}

视图:

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() ?>

控制器:

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
    ]);
}