解决:My97DatePicker 日期插件引用在PHP文件中maxDate和minDate控制失效问题

开发环境:

  语言:PHP

  框架:ThinkPHP

问题:在引用插件My97DatePicker时,想实现:开始日期不能大于结束日期,结束时间不能小于开始时间

步骤一、查看文档官方文档http://www.my97.net/dp/demo/index.htm可以看到实现办法如下:

解决:My97DatePicker 日期插件引用在PHP文件中maxDate和minDate控制失效问题

步骤二、按照文档说明,作用于自己代码中:

<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标签无效参考链接 (推荐方法)

例如:{$name}  修改成:{ $name}

方法2.改变默认的开始标记和结束标记 参考链接 

'TMPL_L_DELIM'=>'<{',

'TMPL_R_DELIM'=>'}>',

方法3.可以使用literal标签来防止模板标签被解析 参考链接  

 <literal>{$name}</literal>

以上自己遇到的问题及解决办法;

上一篇:nginx+lua+redis构建高并发应用(转)


下一篇:nginx+lua+redis 处理APK包替换