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");
}
}
虽然对我来说很完美,如果有人有更合适的解决方案,请提出建议。
我正在使用 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");
}
}
虽然对我来说很完美,如果有人有更合适的解决方案,请提出建议。