2amigos/yii2-date-picker-widget 年验证

2amigos/yii2-date-picker-widget year validation

我正在使用 2amigos/yii2-date-picker-widget.After 选择日期,用户可以编辑可能无效的年份,例如 10/30/0233。 (m/d/Y)

我想限制用户输入无效年份,或只允许特定年份范围内的日期。无需将日期字段设置为只读。我怎样才能做到这一点。

       echo $form->field($model, 'date')->widget(DatePicker::className(), [
                                    'addon' => '<i class="fa fa-calendar" aria-hidden="true"></i>',
                                    'class' => 'form-control',
                                    'clientOptions' => [
                                        'autoclose' => true,
                                        'format' => Yii::$app->params['dateFormat'],
                                    ],

                                ]);

我已经使用自定义验证器解决了这个问题

添加日期规则如下

    ['my_date', 'validYear'], // custom validator to check year range

然后定义自定义规则如下

public function validYear($attribute, $params) {

        $date = DateTime::createFromFormat("m/d/Y", $this->my_date);
        $year = $date->format("Y");
        $year_range = range(date('Y'), date('Y')+20, 1);
        if(!empty($year) && !in_array($year, $year_range)){

            $this->addError($attribute,"Please select valid date");
        }
    }

虽然对我来说很完美,如果有人有更合适的解决方案,请提出建议。