开发环境:
语言:PHP
框架:ThinkPHP
问题:在引用插件My97DatePicker时,想实现:开始日期不能大于结束日期,结束时间不能小于开始时间
步骤一、查看文档官方文档http://www.my97.net/dp/demo/index.htm可以看到实现办法如下:
![](https://www.codeprj.com/image/aHR0cHM6Ly9pbWFnZXMyMDE1LmNuYmxvZ3MuY29tL2Jsb2cvOTQ5ODI3LzIwMTcwNy85NDk4MjctMjAxNzA3MTIxNTIzNDYzMzctMTM4ODU2OTEyOS5wbmc=.png)
步骤二、按照文档说明,作用于自己代码中:
<input name="start_time" type="text" id="start_time" class="Wdate" onClick="WdatePicker({dateFmt:'yyyy-MM-dd',maxDate:'#F{$dp.$D(\'end_time\')}'})"/>
<input name="end_time" type="text" id="end_time" class="Wdate" onClick="WdatePicker({dateFmt:'yyyy-MM-dd',minDate:'#F{$dp.$D(\'start_time\')}',maxDate:'{$max_end_norm}'})"/>
运行发现,maxDate和minDate控制总是失效
排查发现问题:
查看缓存Cache发现如下问题:
<input name="start_time" type="text" id="start_time" class="Wdate" onClick="WdatePicker({dateFmt:'yyyy-MM-dd',maxDate:'#F<?php echo ($dp["$D('end_time')"]); ?>'})"/>
<input name="end_time" type="text" id="end_time" class="Wdate" onClick="WdatePicker({dateFmt:'yyyy-MM-dd',minDate:'#F<?php echo ($dp["$D('start_time')"]); ?>',maxDate:'<?php echo ($max_end_norm); ?>'})"/>
可以看到maxDate和minDate内容全部被当做PHP变量<?php echo ($dp["$D('end_time')"]); ?>和<?php echo ($dp["$D('start_time')"]); ?>编译输出了,而我们想要的结果是作为常量;
解决办法:
方法1.在标签的{ 和$ 之间增加一个空格,让php标签无效参考链接 (推荐方法)
方法2.改变默认的开始标记和结束标记 参考链接
'TMPL_L_DELIM'=>'<{',
'TMPL_R_DELIM'=>'}>',
方法3.可以使用literal标签来防止模板标签被解析 参考链接
<literal>{$name}</literal>
以上自己遇到的问题及解决办法; |