第一次使用thinkphp,關於模板裡資源檔路徑的設定一直搞不懂。
比如
我的項目採用了分組‘Admin’和‘Content’,之前為了測試模板顯示效果簡單地寫了個PageTestAction只有一個show方法來display模板而且為了方便設定了預設分組、預設模型、預設方法,因而訪問地址http://localhost/XBlog(項目名)/index.php一切正常。
而當我使用正常的路徑http://localhost/XBlog/index.php/Content/PageTest/show來訪問是資源檔便無效了
按照我的理解 ’__PUBLIC__‘=‘/Public’因而 ‘.__PUBLIC__‘=‘./Public’, 而'./'表示目前的目錄,所以‘./Public’這個相對位址是相對於index.php的,然而當後面加上’/Content/PageTest/show‘就不行了,難道’/Content/PageTest/show‘也是作為路徑存在的嗎,他改變了當前的路徑?他不是用來表示分組、模組、方法的虛擬路徑嗎?
還有,我發現如果寫成網站根目錄相對位址是這樣的,不理解分什麼中間還夾著一個項目名目錄?還有‘__ROOT__: 會替換成當前網站的地址(不含網域名稱)__APP__: 會替換成當前項目的URL地址 (不含網域名稱)’,難道一個網站可以包含多重專案?
__ROOT__和__APP__是什麼關係?
雖然在本地WWW檔案夾下卻是存在多重專案,但是在伺服器上正式部署不是這樣的吧?/XBlog(項目名)/Public/Theme/default/css/bootstrap.min.css"這種寫法會不會對部署有影響?
回複討論(解決方案)
可以查看thinkphp手冊:1、__ROOT__和__APP__ 為系統常量。
單個模組tpl模板裡面可以使用相對路徑來引用檔案的
可以查看thinkphp手冊:1、__ROOT__和__APP__ 為系統常量。
單個模組tpl模板裡面可以使用相對路徑來引用檔案的
你這等於什麼都沒說啊!能針對我的問題解答一下嗎?還有你難道沒發現‘__ROOT__: 會替換成當前網站的地址(不含網域名稱)__APP__: 會替換成當前項目的URL地址 (不含網域名稱)’這句話就是從thinkphp手冊粘貼的嗎?我就是沒看明白才問的好不好?
www/ 網站的根 http://localhost/
www/index.php 入口檔案 http://localhost/index.php
www/app/ 項目目錄 http://localhost/app/
www/app/... 項目中的所有檔案、目錄
www/ 網站的根 http://localhost/
www/index.php 入口檔案 http://localhost/index.php
www/app/ 項目目錄 http://localhost/app/
www/app/... 項目中的所有檔案、目錄
可是我的項目結構不是這樣的啊?
入口檔案也在APP目錄下啊,這是thinkPHP自動產生的目錄結構啊
www/ 網站的根 http://localhost/
www/index.php 入口檔案 http://localhost/index.php
www/app/ 項目目錄 http://localhost/app/
www/app/... 項目中的所有檔案、目錄
“首先,在伺服器或者本地的Web目錄下面建立一個App目錄,並且把下載的ThinkPHP架構的ThinkPHP目錄拷貝到App目錄下面,然後在App目錄下面建立一個index.php檔案,該檔案就是我們要建立項目的入口檔案。”這是thinkPHP手冊上的原話
第一個問題:
/Content/PageTest/show確實改變了路徑,因此模板中資源地址要使用相對於根目錄的路徑而非當前地址。
第二個問題:
/XBlog應該是你在www目錄下建立的專案檔夾吧,網站根目錄指的是www檔案夾而非專案檔夾
第三個問題:
/XBlog(項目名)/Public/Theme/default/css/bootstrap.min.css這種寫法對部署當然有影響,因為部署時通常將專案檔夾下的內容直接放到www檔案夾下,如果這樣就應去掉/XBlog(項目名)