天天看点

yii2.0使用datatimepicker所遇问题及解决方法

实现效果:

yii2.0使用datatimepicker所遇问题及解决方法

第一步:

job-info/index.php(视图文件)中,前面添加引用,当然,一开始需要将此库composer进去(这个与DatetimePicker同属于kartik下),然后在GridView里加入下面的代码:

yii2.0使用datatimepicker所遇问题及解决方法
yii2.0使用datatimepicker所遇问题及解决方法

第二步:

JobInfoSearch.php添加下面的搜索条件:

yii2.0使用datatimepicker所遇问题及解决方法

第三步:

注意:一定要将下图的相应查询删除,因为此查询会与上面新建的查询一起产生sql语句:where and;

,也就是查询条件需要满足这两个条件,而plan_finish_time从视图文件传过来的是一个这样的字符串:string '2018-09-06/2018-10-01';肯定没有选项满足这个条件,查不出任何东西!

yii2.0使用datatimepicker所遇问题及解决方法

可以自己制造一个错误,去查看所生成的sql语句(比如改为plan_finishi_time):

yii2.0使用datatimepicker所遇问题及解决方法

红框里的条件无论如何都是查不出来的,但是又不会报错,故此错误一定要注意!

总体来说就这三步,但是遇到的坑无数。接下来仔细分析每一步。

第一步:

1、'format' => ['date', "php:Y-m-d H:i:s"],格式会覆盖前面的“value”,不需要;

2、红框2、3的名称一定不要一样,之前上网找的方案,这两个名称一样,导致数据无论如何都传不到searchmodel里面去;(参考https://www.jianshu.com/p/e64d3bb97109)

3、红框4,表示时间格式使用format参数进行设置 ,如果format设置了时间格式一定要convertFormat=>true,不然会有问题。具体的没有试过。

关于datatimepicker的参数配置,可以参考下面几篇文章:

https://blog.csdn.net/Webben/article/details/78319276

https://blog.csdn.net/baidu_38990811/article/details/79509418

https://www.cnblogs.com/leijing0607/p/7698414.html

https://www.cnblogs.com/wwolf/p/5425125.html

ranges需要下载moment.js插件。

(参考文章:https://blog.csdn.net/sinat_17775997/article/details/52130948)

另外,看到一篇在form里实现的时间查询:

https://blog.csdn.net/ldTrueLove/article/details/53944518

一篇利用js的$()的时间查询,比较复杂,而且其中的get_date_time不知道是哪来的:

https://www.jb51.net/article/121232.htm

第二步:

查询方法用的andFilterCompare();具体格式就如上图;

用网上的查询:

if (!empty($this->repaymentTime)) { $query->andFilterCompare('repaymentTime', strtotime(explode('/', $this->repaymentTime)[0]), '>=');//起始时间 $query->andFilterCompare('repaymentTime', (strtotime(explode('/', $this->repaymentTime)[1]) + 86400), '<');//结束时间 }。这个将时间转化为时间戳,他数据库存的数据格式应该是时间戳;而我们自己的数据库里是以datetime存储,是一个字符串,其类型是这样的:

yii2.0使用datatimepicker所遇问题及解决方法

因此,不需要将时间格式转化!

第三步:

可以参考中文官方文档https://www.yiichina.com/doc/guide/2.0/db-query-builder

另外,在纠错过程中,用了一些其它的查询方法:

yii2.0使用datatimepicker所遇问题及解决方法

用andFilterWhere不知为何查询不出来,看其它网友说是版本问题;

以下注释掉的方法都尝试过:

yii2.0使用datatimepicker所遇问题及解决方法

datarangepicker遇到的问题:

https://blog.csdn.net/qq_20952591/article/details/52439916