Yii2: добавить сборщик данных для gridview

У меня есть выходной код для определенных данных из связанных таблиц. но у меня также есть задача добавить 2 поля поиска по дате.

Там должно быть 2 поля created_at а также end_at выбирая дату, когда я смогу отфильтровать лишние данные

мой контроллер:

{
    $dateNowMinusMonth = new \DateTime('-1 month');
    $payed = OrderPayment::find()->where(['status' => OrderPayment::STATUS_PAYED])
        ->andWhere(['>=', 'created_at', $dateNowMinusMonth->format('Y-m-d H:i:s')])
        ->all();
    $orderIds = ArrayHelper::getColumn($payed, 'order_id');
    $elements = [];
    if ($orders = Order::find()->where(['id' => $orderIds])->all()) {
        foreach ($orders as $order) {
            foreach ($order->elements as $element) {
                $product = $element->product;
                if (array_key_exists($product->id, $elements)) {
                    $elements[$product->id]['count'] += 1;
                } else {
                    $elements[$product->id] = [
                        'name' => $product->name,
                        'barcode' => $product->barcode,
                        'count' => 0,
                        'amount' => $product->storitem->amount,
                        'item_cost' => $product->purchase->item_cost,
                        'price' => $product->price,
                    ];
                }
            }
        }
    }
    $dataProvider = new ArrayDataProvider([
        'allModels' => $elements,
        'sort' => [
            'defaultOrder' => ['count' => SORT_DESC],
            'attributes' => ['name', 'count', 'barcode', 'amount', 'item_cost', 'price']
        ],
        'pagination' => [
            'pageSize' => 15,
        ],
    ]);
    return $this->render('Reporat', [
        'dataProvider' => $dataProvider,
    ]);
}

и посмотреть:

<?= GridView::widget([
'id' => 'search-table',
'dataProvider' => $dataProvider,
'striped' => false,
'options' => ['class' => 'text-center'],
'columns' => [
    'name',
    'barcode',
    'item_cost',
    'price',
    'count',
    'amount'
],
]); ?>

Пожалуйста, помогите мне добавить 2 поля, по которым я смогу фильтровать отображаемые данные по дате создания и дате окончания.

1 ответ

Можете ли вы попробовать код ниже? сначала вам нужно установить kartik datepicker или daterangepicker.

          use kartik\daterange\DateRangePicker;
                   [
                    'label' => Yii::t('app', "Start Date"),
                    'attribute' => 'start_date',
                    'value' => function ($model) {
                        if (extension_loaded('intl')) {
                            return $model->start_date;
                        } else {
                            return $model->start_date;
                        }
                    },
                    'filter' => DateRangePicker::widget([
                        'model' => $searchModel,
                        'attribute' => 'start_date',
                        'convertFormat' => true,
                        //'presetDropdown' => true,
                        //'useWithAddon'=>true,
                        'pluginOptions' => [
                            //'autoUpdateInput'=>false,
                            //'useCurrent'=> false,
                            //'opens'=>'right',
                            'locale' => [
                                'format' => 'Y-m-d',
                            ],
                        //'initRangeExpr' => false,
                        //'alwaysShowCalendars' => false,
                        'singleDatePicker'=> true,
                        ],
                    ]),
                ],
Другие вопросы по тегам