欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Thinkphp模板沒有解析直接原樣輸出的解決方法

 更新時間:2014年10月31日 11:25:14   投稿:shichen2014  
這篇文章主要介紹了Thinkphp模板沒有解析直接原樣輸出的解決方法,是很多開發(fā)者都遇到的問題,非常實用,需要的朋友可以參考下

本文實例講述了Thinkphp模板沒有解析直接原樣輸出的解決方法。分享給大家供大家參考。具體如下:

一、問題:

最近在學習thinkphp模板了,但是發(fā)現模板頁原樣出來了,經過一番艱苦搜索終于找到解決方案。

二、解決方法:

很多人都碰到相同問題,在變量中賦值的字符串中包含的__ROOT__、__PUBLIC__、__APP__,這種字符的, 在模板中display出來的時候都被替換成了真實路徑。話說是在寫Timi文件管理系統(tǒng)的時候發(fā)現的這個問題。

從文件中把源碼讀出來輸出到頁面后發(fā)現,只要是TP的路徑字符,都被替換成了真實路徑。
比如:

復制代碼 代碼如下:
$this->assign('fileContent',$fileContent);//$fileContent中包含__PUBLIC__“路徑常量”字符。

 
頁面輸出后顯示為真實路徑/public/。
期間經過了多種嘗試,比如assign的時候base64加密,模板輸出的時候decode一下,發(fā)現沒起作用。最后終于忍不住的看了下Tp這塊的源碼,發(fā)現在display方法的最后一步的時候通過調用tag方法把“Tp的路徑常量”替換成真實路徑的。在render方法之前都是正常的。

本來準備改下源碼實現下面這位童鞋的需求方案的:
老大、這是臨時解決方案還是最終方案?
不過我感覺在assign()方法里面加個判斷還不錯,
如果是$this->assign('','',false),則對內容不替換,原樣輸出。

結果,看完這塊源碼后才發(fā)現,不是那么容易,改動太大了。

最后另一位童鞋的回復,點出了最終解決方案:

“可以參考這里的內容:http://www.dbjr.com.cn/article/54217.htm(模板替換)
 
有了模板替換規(guī)則后,頁面上所有的__PUBLIC__ 字符串都會被替換,那如果確實需要輸出__PUBLIC__ 字符串到模板呢,我們可以通過增加替換規(guī)則的方式,例如:

復制代碼 代碼如下:
'TMPL_PARSE_STRING'  =>array(
         '--PUBLIC--' => '__PUBLIC__', // 采用新規(guī)則輸出/Public字符串
)

這樣增加替換規(guī)則后,如果我們要輸出__PUBLIC__ 字符串,只需要在模板中添加--PUBLIC--,其他替換字符串的輸出方式類似。

這樣增加替換規(guī)則后,如果我們要輸出__PUBLIC__ 字符串,只需要在模板中添加--PUBLIC--,其他替換字符串的輸出方式類似。

于是乎,方案出爐:

在Tp的配置文件config.php中配置

復制代碼 代碼如下:
'TMPL_PARSE_STRING' => array (//路徑配置
      
        //Timi文件路徑還原
        '--PUBLIC--' => '__PUBLIC__',
        '--APP--' => '__APP__',
        '--URL--' => '__URL__',
        '--ACTION--' => '__ACTION__',
        '--SELF--' => '__SELF__',
        '--INFO--' => '__INFO__',
        '--EXT--' => '__EXT__'
),

讀出源碼的時候正則替換一下“路徑常量字符”__ROOT__為--ROOT--:

復制代碼 代碼如下:
$fileContent=file_get_contents($filePath);
$fileContent=htmlspecialchars(preg_replace('/__(.*?)__/is','--$1--',$fileContent));

然后TMPL_PARSE_STRING的配置在模板被解析的時候剛好替換回去,如下圖所示:

于是乎,這個問題就“暫時”“完美”解決了。

希望本文所述對大家的ThinkPHP框架程序設計有所幫助。

相關文章

  • 基于JavaScript操作DOM常用的API小結

    基于JavaScript操作DOM常用的API小結

    DOM(Document Object Model)即文檔對象模型,針對 HTML 和 XML 文檔的 API(應用程序接口)。本篇文章給大家介紹javascript操作dom常用的api小結,對javascript dom api相關知識感興趣的朋友一起學習吧
    2015-12-12
  • 頁面加載完畢后滾動條自動滾動一定位置

    頁面加載完畢后滾動條自動滾動一定位置

    希望頁面加載完畢后向左自動滾動一定位置,下面有個不錯的方法可以輕松幫大家實現下
    2014-02-02
  • 原生JS實現的雪花飄落動畫效果

    原生JS實現的雪花飄落動畫效果

    這篇文章主要介紹了原生JS實現的雪花飄落動畫效果,涉及javascript數值運算及頁面元素屬性動態(tài)操作相關實現技巧,需要的朋友可以參考下
    2018-05-05
  • 使用post方法實現json往返傳輸數據的方法

    使用post方法實現json往返傳輸數據的方法

    今天小編就為大家分享一篇關于使用post方法實現json往返傳輸數據的方法,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • 一文讓你快速了解JavaScript棧

    一文讓你快速了解JavaScript棧

    這篇文章主要介紹了一文讓你快速了解JavaScript棧,棧全稱為堆棧,是一種先進后出的的數據結構,棧中只有兩種基本操作,也就是插入和刪除,也就是入棧和出棧操作,棧只有一端可以進行入棧和出棧操作,我們將其稱為棧頂,另一端稱其為棧底
    2022-07-07
  • 如何利用JS判斷整數x是否是回文數

    如何利用JS判斷整數x是否是回文數

    回文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數,下面這篇文章主要給大家介紹了關于如何利用JS判斷整數x是否是回文數的相關資料,需要的朋友可以參考下
    2022-01-01
  • 實例詳解JS中的事件循環(huán)機制

    實例詳解JS中的事件循環(huán)機制

    JavaScript是單線程的腳本語言,所以代碼在執(zhí)行的時候,只有一個主線程來執(zhí)行所有的任務,同一個時間只能做同一件事情。本文就為大家詳細講解一下它的件循環(huán)機制,需要的可以參考一下
    2022-04-04
  • SwfUpload在IE10上不出現上傳按鈕的解決方法

    SwfUpload在IE10上不出現上傳按鈕的解決方法

    在測試中發(fā)現使用了SwfUpload實現的無刷新上傳功能,在IE10上竟然無法使用了,難道SwfUpload不支持嗎?下面與大家分享下通過修改SwfUplad.JS文件讓其支持ie10
    2013-06-06
  • js的對象與函數詳解

    js的對象與函數詳解

    今天小編就為大家分享一篇關于js的對象與函數詳解,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • js中判斷變量類型函數typeof的用法總結

    js中判斷變量類型函數typeof的用法總結

    下面小編就為大家?guī)硪黄猨s中判斷變量類型函數typeof的用法總結。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-08-08

最新評論