|  RSS订阅  |  加入收藏

My97DatePicker日期控件自定义脚本日期在ThinkPHP5下面报错

作为老牌日期控件,My97DatePicker的日期定义灵活方便,所以前端日期一直使用My97DatePicker作为首选。本文讲述在ThinkPHP的模版集成My97DatePicker出现冲突的解决办法。
摘要
...

最近一个项目又牵扯到日期限定的操作,在thinkPHP5下集成My97DatePicker过程中报了一个未定义变量:D的错误。一般性载入没问题,只有在自定义脚本日期上报错。很显然是冲突造成的。





问题场景复现。

使用My97DatePicker自定义脚本日期,做一个时间段的选择,起始时间为今日起,终止时间为未来某一天。两个日期选择框,对应两条规则,第一起始日期不能为过去的日期。第二起始日期不能大于终止日期。两条规则一限定就构成了一个选择范围。原本心想很简单,翻开My97DatePicker的demo,一顿拷贝,然后上述两条规则一定义,原本以为就这样完事了,如图:

未标题-1.jpg

页面一刷新,傻眼了,竟然报了一个未定义变量:D 的错误。


问题原因及查找。

第一反应未定义变量这是PHP的错误啊,博主写程序从来不会写单字母的变量的,所以问题肯定是刚刚的时间控件的问题。不过My97DatePicker是个纯js程序,哪来的PHP报错。于是就去查了下ErrorException(runtime目录下的temp目录中)。发现My97DatePicker中关于$dp.$D没有被正确编译,而是把D解析成了一个变量,看到这样的编译结果,顿时就明白了原因。如图:

未标题-2.jpg

很显然,因为ThinkPHP5的模版语法采用的是单花括号,而不是更常见的双花括号。TP5将$dp.$D解析成了变量,从而造成了这部分内容没有变My97DatePicker的js接管。


解决办法。

解决办法也很简单,如果仔细看过TP5的手册的话,在模版章节中关于变量输出中有这样一句话:{和$之间不能有任何空格,否则标签无效。

未标题-4.jpg

关于$dp.$D在My97DatePicker的demo中也给出了解释。

未标题-3.jpg

有了上面两个解释就好办了,只要使{$dp.$D}这个标签无效,就能达到目的,那么只需将#f{$dp.$D}中的{和$之前敲一个空格就妥了。最终效果如图:

未标题-5.jpg

再次刷新页面,就可以看到My97DatePicker空间被正常加载了,无任何错误。


打赏
  PHP    ThinkPHP    
转载请注明出处,未经许可禁止商用!
西枫里 熊掌号
代码改变世界 ———— 半路出家,全程修道
发表评论
*依据《网络安全法》规定,您需实名认证后才能评论!
@西枫里人:可能是这几天在折腾的缘故。要不现在帮我看看,应该还好
@米粒博客:不怎么稳定,我每天去访问,要么加载好久,要么好几次都打不开。嘿嘿
@西枫里人:关键在我的是免费空间,免费二字,哇哈哈
@米粒博客:换个国内入门的云,有没有CDN也无所谓了。安心输出内容就好。
表示完全看不懂,又拍云都没被我折腾明白,唉,又用不了加速了
@沈唁志:大佬的头像真是闪瞎我了~
滑稽头来嘚瑟了
@:庄大佬的头像让人很神伤~

DALAO,6666。。
@银色月航:有有有,按F12,偷笑
还是希望有心情分享栏目,可以任意水水
@里维斯社:可以可以,欢迎常来。我这里评论不限内容,只要不违法,都可以~
我也来水一波
@梁兴健:强行水一波,简称强力胶水。可以可以~
很不好意思地强行水一波 ∋━━o(`∀´oメ)