首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

ThinkPHP 模板輸出 ../Public 不被解析的配置技巧

     編輯:PHP 綜合知識

問題現象

在 ThinkPHP 模板中使用 ../Public 相對路徑引用靜態資源時,模板引擎會自動將其替換為當前模塊的公共模板目錄(如 /Project/Tpl/Default/Public/),導致資源載入失敗。

根因

ThinkPHP 模板引擎內建字符串替換機制,預設會將 __PUBLIC__、__ROOT__ 等特殊標識替換為對應路徑。../Public 被誤識別為需替換的標識。

解決方案

在專案配置文件 config.php 中添加 TMPL_PARSE_STRING 規則,強制保持原樣輸出:

 [
        '../Public' => "../Public",  // 鍵值相同,表示不替換
        // 可批量添加更多保持原樣的路徑
        // '../Static' => "../Static",
    ],
];
?>

原理說明

  • TMPL_PARSE_STRING 接受陣列,鍵為「模板中出現的字符串」,值為「替換後的字符串」
  • 當鍵值相同時,實際上是「替換為自身」,即禁用替換
  • 模板編譯階段會遍歷此配置執行 str_replace

驗證方式







延伸:常用路徑替換配置

'TMPL_PARSE_STRING' => [
    '__STATIC__'     => __ROOT__ . '/Public/Static',   // 自定義靜態資源根目錄
    '__UPLOAD__'     => __ROOT__ . '/Uploads',         // 上傳檔案目錄
    '../Public'      => "../Public",                    // 保持相對路徑
    '__CSS__'        => __ROOT__ . '/Public/Css',
    '__JS__'         => __ROOT__ . '/Public/Js',
    '__IMG__'        => __ROOT__ . '/Public/Images',
],

注意事項

  • 修改配置後需清除模板緩存 (Runtime/Cache/)
  • ThinkPHP 3.2+ 版本支援,舊版本可能需修改核心類
  • 建議統一使用 __STATIC__ 等自定義標識,避免相對路徑在不同模塊深度下失效

更多 ThinkPHP 技巧請參考:《ThinkPHP 入門教程》及《ThinkPHP 常用方法總結》。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved