【问题标题】:How to add Yii2 jui datepicker to filter field in GridView如何将 Yii2 jui datepicker 添加到 GridView 中的过滤字段
【发布时间】:2023-03-28 03:45:01
【问题描述】:

我使用的代码与在 ActiveForm 中添加的代码相同,但它不起作用:

在gridview的过滤字段中添加jui datepicker的正确方法是什么?

<?= GridView::widget([
        'dataProvider' => $dataProvider,
        'filterModel' => $searchModel,
        'columns' => [
            ['class' => 'yii\grid\SerialColumn'],

            'list_id',
            [
                'attribute' => 'channel',
                'value' => 'channel.title',
            ],
            [
                'attribute' => 'list_date',
                'value' => 'list_date',
                'filter' => \yii\jui\DatePicker::widget(\yii\jui\DatePicker::className(), ['language' => 'ru', 'dateFormat' => 'dd-MM-yyyy']),
            ],
            'make_date',

            ['class' => 'yii\grid\ActionColumn'],
        ],
    ]); ?>

【问题讨论】:

    标签: gridview datepicker yii2


    【解决方案1】:

    我试过了,效果很好:

    [
        'attribute' => 'updated_at',
        'value' => 'updated_at',
        'filter' => \yii\jui\DatePicker::widget([
            'model'=>$searchModel,
            'attribute'=>'updated_at',
            'language' => 'ru',
            'dateFormat' => 'dd-MM-yyyy',
        ]),
        'format' => 'html',
    ],
    

    然后,您必须将此行添加到您的搜索模型中:

    $query->andFilterWhere([
    
        ...
    
        'DATE(updated_at)' => $this->updated_at,
    ]);
    

    确保日期格式相同。

    【讨论】:

      【解决方案2】:

      您可以按日期选择器将以下代码用于文件管理器。

      首次导入日期选择器

      use kartik\date\DatePicker;
      

      然后在gridview中使用下面的代码

      [
                   'attribute' => 'order_date',
                   'value' => 'order_date',
                   'format' => 'raw',
                   'label' => "Order Date",
                   'filter' => DatePicker::widget([
                       'model' => $searchModel,
                       'name' => 'OrdersdropSearch[order_date]',
                       'value' => ArrayHelper::getValue($_GET, "OrdersdropSearch.order_date"),
                       'pluginOptions' => [
                           'format' => 'yyyy-mm-dd',
                           'autoclose' => true,
                       ]
                   ])
               ],
      

      搜索模型将相同。

      【讨论】:

        【解决方案3】:
         [
                    'attribute' => 'updated_at',
                    'value' => 'updated_at',
                    },
                    'filter' => \yii\jui\DatePicker::widget([
                            'model'=>$searchModel,
                            'attribute'=>'updated_at',
                            'language' => 'ru',
                            'dateFormat' => 'dd-MM-yyyy',
                        ]),
                    'format' => 'html',
                ],
        

        【讨论】:

          【解决方案4】:

          您的小部件参数错误,您应该使用htmlraw 格式:

                  [
                      'attribute' => 'list_date',
                      'value' => 'list_date',
                      'filter' => \yii\jui\DatePicker::widget(['language' => 'ru', 'dateFormat' => 'dd-MM-yyyy']),
                      'format' => 'html',
                  ],
          

          阅读更多关于Data Formatting的信息。

          【讨论】:

            【解决方案5】:
                    [
                        'attribute' => 'updated_at',
                        'value' => 'updated_at',
                        //'format' => ['date', 'php:d.m.Y'],
                        'options' => ['width' => '115'],
                        'filter' => \yii\jui\DatePicker::widget(
                            [
                                'name' => 'NewsSearch[updated_at]',
                                'value' => \yii\helpers\ArrayHelper::getValue($_GET, 'NewsSearch.updated_at'),
                                'language' => 'ru',
                                'dateFormat' => 'yyyy-MM-dd',
                                // 'model' => $searchModel,
                                // 'attribute' => 'updated_at',
                                'options' => [
                                    'class' => 'form-control'
                                ],
                            ]
                        ),
                    ],
            
            1. 避免在 'filter' 部分使用 'attribute'=> 'updated_at';

            2. 指定直接“名称”属性(该名称将为过滤器行中的相应输入提供)

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2015-02-04
              • 1970-01-01
              • 1970-01-01
              • 2015-05-04
              • 1970-01-01
              • 1970-01-01
              • 2018-01-05
              相关资源
              最近更新 更多