具有两个属性的 Kartik DateRangePicker 在范围日期选择时导致 invalidDateFormat 和 NaN
Kartik DateRangePicker with two attributes cause invalidDateFormat and NaN on range date selection
我对我在 gridview 中用于过滤某些结果的 Kartik DateRangePicker 小部件有疑问。
在我的 SearchModel 中,我创建了两个属性
public $date_start;
public $date_end;
我使用这些来过滤数据库中的字段 'insert_date'。
在我看来,作为网格配置,我已经设置了这些选项
[
'attribute' => 'insert_date',
'options' => ['class' => 'gridview-date-column'],
'filter' => DateRangePicker::widget([
'model' => $searchModel,
'name' => 'insert_date',
'attribute' => 'insert_date',
'startAttribute' => 'date_start',
'endAttribute' => 'date_end',
'convertFormat'=>true,
'pluginOptions' => [
'opens'=>'right',
'locale' => [
'cancelLabel' => 'Clear',
'format' => 'd-m-Y',
],
]
]),
'format' => ['date', Yii::$app->formatter->datetimeFormat],
'contentOptions'=>['style'=>'min-width: 200px;']
],
默认情况下 $date_start 和 $date_end 没有值,因此,当我进入我的视图并尝试过滤此字段时,我收到 'invalidDate' 错误并且日历上的一系列 NaN。
如果我为这两个字段设置一个值,或者如果将它们从配置中删除(因此我只能使用 insert_date 属性作为具有这两个范围的字符串进行过滤,则此问题是固定的)。
查看插件存储库,我找到了 same case 并且作为作者的回应
This problem occurs because you have an invalid date format for the data that does not match the plugin's format.
但由于这些字段为空,因此永远不可能有正确的数据格式。
有人遇到过同样的问题吗?
预先感谢所有回复。
我找到了解决方案:
在 Kartik 插件中有一个我可以包含在我的 searchModel 中的行为模型:
use kartik\daterange\DateRangeBehavior;
然后我可以实例化它覆盖 behaviors() 方法:
public $date_start;
public $date_end;
public function behaviors() {
return [
[
'class' => DateRangeBehavior::className(),
'attribute' => 'insert_date',
'dateStartAttribute' => 'date_start',
'dateEndAttribute' => 'date_end',
'dateStartFormat' => 'd-m-Y',
'dateEndFormat' => 'd-m-Y',
]
];
}
在 search() 方法中:
public function search($params)
{
// Some other filters
if($this->date_start && $this->date_end) {
// filtered query
}
}
希望这可以帮助其他人。
我对我在 gridview 中用于过滤某些结果的 Kartik DateRangePicker 小部件有疑问。
在我的 SearchModel 中,我创建了两个属性
public $date_start;
public $date_end;
我使用这些来过滤数据库中的字段 'insert_date'。
在我看来,作为网格配置,我已经设置了这些选项
[
'attribute' => 'insert_date',
'options' => ['class' => 'gridview-date-column'],
'filter' => DateRangePicker::widget([
'model' => $searchModel,
'name' => 'insert_date',
'attribute' => 'insert_date',
'startAttribute' => 'date_start',
'endAttribute' => 'date_end',
'convertFormat'=>true,
'pluginOptions' => [
'opens'=>'right',
'locale' => [
'cancelLabel' => 'Clear',
'format' => 'd-m-Y',
],
]
]),
'format' => ['date', Yii::$app->formatter->datetimeFormat],
'contentOptions'=>['style'=>'min-width: 200px;']
],
默认情况下 $date_start 和 $date_end 没有值,因此,当我进入我的视图并尝试过滤此字段时,我收到 'invalidDate' 错误并且日历上的一系列 NaN。
如果我为这两个字段设置一个值,或者如果将它们从配置中删除(因此我只能使用 insert_date 属性作为具有这两个范围的字符串进行过滤,则此问题是固定的)。
查看插件存储库,我找到了 same case 并且作为作者的回应
This problem occurs because you have an invalid date format for the data that does not match the plugin's format.
但由于这些字段为空,因此永远不可能有正确的数据格式。
有人遇到过同样的问题吗? 预先感谢所有回复。
我找到了解决方案:
在 Kartik 插件中有一个我可以包含在我的 searchModel 中的行为模型:
use kartik\daterange\DateRangeBehavior;
然后我可以实例化它覆盖 behaviors() 方法:
public $date_start;
public $date_end;
public function behaviors() {
return [
[
'class' => DateRangeBehavior::className(),
'attribute' => 'insert_date',
'dateStartAttribute' => 'date_start',
'dateEndAttribute' => 'date_end',
'dateStartFormat' => 'd-m-Y',
'dateEndFormat' => 'd-m-Y',
]
];
}
在 search() 方法中:
public function search($params)
{
// Some other filters
if($this->date_start && $this->date_end) {
// filtered query
}
}
希望这可以帮助其他人。