亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

一、問題:

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

二、解決方法:

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

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

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

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

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

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

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

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

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

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

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

于是乎,方案出爐:

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

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

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

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

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

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

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

相關(guān)文章

  • 基于JavaScript操作DOM常用的API小結(jié)

    基于JavaScript操作DOM常用的API小結(jié)

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

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

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

    原生JS實現(xiàn)的雪花飄落動畫效果

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

    使用post方法實現(xiàn)json往返傳輸數(shù)據(jù)的方法

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

    一文讓你快速了解JavaScript棧

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

    如何利用JS判斷整數(shù)x是否是回文數(shù)

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

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

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

    SwfUpload在IE10上不出現(xiàn)上傳按鈕的解決方法

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

    js的對象與函數(shù)詳解

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

    js中判斷變量類型函數(shù)typeof的用法總結(jié)

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

最新評論