TP5代替/設置類似TP3.2常量 __ROOT__ 的函數

在以前的thinkphp3.2中引入css/js文件的時候,要配置項目路徑

  //'配置項'=>'配置值'
    'TMPL_PARSE_STRING' =>array(
        '__PUBLIC__' => __ROOT__.'/Application/Admin/Public',
    ),

而在thinkphp5中,本身不存在這個函數,所以需要配置一下,在template.php文件(項目其他位置也可以,只要能訪問到就行)新增下面這個函數(從TP3.2複製過來的)

function root(){
    $root  = $phpfile = '';
    $iscgi = (0 === strpos(PHP_SAPI,'cgi') || false !== strpos(PHP_SAPI,'fcgi')) ? 1 : 0 ;
    if ( $iscgi ) {
        $temp    = explode('.php',$_SERVER['PHP_SELF']);
        $phpfile = rtrim(str_replace($_SERVER['HTTP_HOST'],'',$temp[0].'.php'),'/');
    } else {
        $phpfile = rtrim($_SERVER['SCRIPT_NAME'],'/');
    }
    $root =   rtrim(dirname($phpfile),'/');
    return (($root=='/' || $root=='\\') ? '' : $root);
}

然後在template.php文件中配置  (這個配置文件,有的版本是在config.php中)

//至於爲什麼要註釋第一行,因爲這個配置在本地能運行,項目上傳到服務器就出問題了,所以就用下面這個方法。

'tpl_replace_string'  =>  [
//        '__STATIC__' => '/static',  //至於爲什麼要註釋這個,因爲這個配置在本地能運行,項目上傳到服務器就出問題了,所以就用下面這個方法。
        '__STATIC__' => root().'/static',
        '__UPLOADS__' => '/uploads'
    ],

我是自己親自試過可行,所以記錄下來。


(幾天後補充一下)

因爲涉及到域名的一些解析問題,上面講到的是針對服務器上的項目,且沒有配置域名的情況下,也就是說按照項目路徑訪問情況下。後來我給項目配置了一個域名後,還是這樣吧。(其中的道理還得再去深究一下)

'tpl_replace_string'  =>  [
        '__STATIC__' => '/static', 
        '__UPLOADS__' => '/uploads'
    ],
 

 

發佈了97 篇原創文章 · 獲贊 85 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章