2 годовая проверка amigos/yii2-date-picker-widget

Я использую 2 amigos/yii2-date-picker-widget. После выбора даты пользователь может изменить год, который может быть недействительным, например 10/30/0233. (м / д / год)

Я хочу ограничить пользователя вводом недопустимого года или разрешить дату только между определенным диапазоном лет. не делая поле даты доступным только для чтения. Как я могу этого добиться.

       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'],
                                    ],

                                ]);

person Nitin Pund    schedule 14.09.2016    source источник


Ответы (1)


Я решил это с помощью пользовательского валидатора следующим образом

добавить правило для даты следующим образом

    ['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");
        }
    }

Хотя это отлично работает для меня, если у кого-то есть более подходящее решение, предложите.

person Nitin Pund    schedule 14.09.2016