Выбор диапазона дат Yii2 Gridfilter - PullRequest
0 голосов
/ 05 июля 2019

Я разработал приложение в yii2 и для фильтра в виде сетки я использовал расширение выбора диапазона дат Kartik.

Я столкнулся со следующей проблемой.

  • Когда я выбираю другую дату для начальной и конечной даты, это будет работать. например, дата начала 5 и дата окончания 10

  • Когда я выбираю на следующий день одну и ту же дату для начальной и конечной даты, тогда это будет работать. например, дата начала 6 и дата окончания 6

  • Когда я выбираю сегодняшнюю дату для даты начала и окончания, она не будет работать. например, дата начала 5 и дата окончания 5

Пример кода.

<?php

$gridColumns = [
    [
        'class' => 'kartik\grid\SerialColumn'
    ],
    [
        'label' => Yii::t('app', "Created At"),
        'attribute' => 'created_at',
        'value' => function ($model) {
            if (extension_loaded('intl')) {
                return $model->created_at;
            } else {
                return $model->created_at;
            }
        },
        'filter' => DateRangePicker::widget(
            [
                'model' => $searchModel,
                'attribute' => 'created_at',
                'convertFormat' => true,
                'presetDropdown' => false,
                'pluginOptions' => [
                    'locale' => [
                        'format' => 'Y-m-d'
                    ]
                ]
            ]
        )
    ],
    [
        'attribute' => 'branch_id',
        'value' => 'branch.name',
        'filter' => Html::activeDropDownList(
            $searchModel,
            'branch_id',
            ArrayHelper::map(Branch::find()->asArray()->all(), 'id', 'name'),
            ['class' => 'form-control', 'prompt' => 'Select Branch']
        )
    ],
    [
        'attribute' => 'user_id',
        'value' => 'user.firstname',
        'filter' => Html::activeDropDownList(
            $searchModel,
            'user_id',
            ArrayHelper::map(User::find()->asArray()->all(), 'id', 'firstname'),
            ['class' => 'form-control', 'prompt' => 'Select User']
        )
    ],
    [
        'attribute' => 'order_status',
        'format' => 'html',
        'filter' => ["0" => "Completed", "1" => "Refund", "2" => "Cancel"],
        'value' => function ($model) {
            if ($model->order_status == '1') {
                return '<span class="label bg-red">Refund</span>';
            } else if ($model->order_status == '2') {
                return '<span class="label bg-yellow">Cancel</span>';
            } else {
                return '<span class="label bg-blue">Completed</span>';
            }
        }

    ],
    [
        'attribute' => 'created_from',
        'format' => 'html',
        'value' => function ($model) {
            if ($model->created_from == '1') {
                return '<span class="">WEB<small>';
            } else if ($model->created_from == '2') {
                return '<span class="">IOS<small>';
            } else if ($model->created_from == '3') { //MARKAS
                return '<span class="">ANDROID<small>';
            }
        }

    ],
    [
        'attribute' => 'pax',
        'format' => 'html',
        'value' => function ($model) {
            $setting = common\constants\EstablishmentConfiguration::activeSetting();
            $type = '';
            $paxFlag = '0';
            if (!empty($setting)) {

                $type = $setting->establishment_type;
                $paxFlag = $setting->enable_pax;
            }
            if ($type == 'restaurant' && $paxFlag == '1') {
                return $model->pax;
            } else {
                return '--';
            }
        }

    ],
    //'pax',
    'sub_total',
    'discount',
    'tax',
    'grand_total',
    [
        'class' => 'yii\grid\ActionColumn',
        'header' => Yii::t('app', 'Action'),
        'template' => '{view} {movetofack}',
        'contentOptions' => ['style' => 'width:10%'],
        'buttons' => [
            'view' => function ($url, $model) {
                return Html::a(
                    '<span class="glyphicon glyphicon-eye-open"></span>',
                    ['view', 'id' => $model->id],
                    [
                        'class' => 'btn btn-xs btn-warning',
                        'title' => 'View',
                        'data-skin' => 'skin-warning'
                    ]
                );
            },
            'movetofack' => function ($url, $model) {
                return Html::a(
                    '<span class=" fa fa-trash"></span>',
                    [
                        'movettotrash', 'id' => $model->id
                    ],
                    [
                        'class' => 'btn btn-xs btn-warning',
                        'title' => 'Fack Record',
                        'data-skin' => 'skin-warning',
                        'data' => [
                            'confirm' => Yii::t('app/msg', 'Are you sure this is fake record? would you like to move to trash this order?'),
                            'method' => 'post'
                        ]
                    ]
                );
            }

        ]
    ]

];
...