開發環境:
語言:PHP
框架:ThinkPHP
問題:在引用插件My97DatePicker時,想實現:開始日期不能大於結束日期,結束時間不能小於開始時間
步驟一、查看文檔官方文檔http://www.my97.net/dp/demo/index.htm可以看到實現辦法如下:
步驟二、按照文檔說明,作用於自己代碼中:
<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>
以上自己遇到的問題及解決辦法;