vrtc/

yii2-querybuilder

为Yii2框架提供与jQuery QueryBuilder协同工作的扩展

安装次数: 141

依赖者: 0

建议者: 0

安全性: 0

星标: 0

关注者: 1

分支: 0

开放性问题: 0

类型:yii2-extension

1.1 2019-01-25 16:19 UTC

This package is not auto-updated.

Last update: 2024-09-29 05:55:20 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 vrtc/yii2-querybuilder "*"

或者在您的composer.json文件的require部分添加以下内容:

"vrtc/yii2-querybuilder": "*"

使用方法

视图:

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

控制器:

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

搜索模型

        if (!is_null($rules) && !empty($rules['rules'])) {
            if ($rules) {
                $translator = new Translator($rules);
                $query->andWhere($translator->where())
                    ->addParams($translator->params());
            }
        }
        

搜索模型添加方法

           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;
    }
    ```