ThinkPHP3.2中引入JS,CSS檔案路徑配置
在ThinkPHP3.2框架中,預設已經沒有Public檔案夾了。其中對於__PUBLIC__
的定義也需要重新定義。這給筆者造成了很長時間的困擾,現在這個問題終於解決,分享出來給大家參照一下。
在ThinkPHP中config檔案中進行一下配置即可。
//重定義網站的一些URL地址
/* 模板相關配置 */
'TMPL_PARSE_STRING' => array(
'__PUBLIC__' => __ROOT__ . '/Public',
'__JS__' => __ROOT__ . '/Public/Js',
'__CSS__' => __ROOT__ . '/Public/Css',
'__IMAGE__' => __ROOT__ . '/Public/Image',
'__DATA__' => __ROOT__ . '/Data/'
),
在ThinkPHP3.2中其中__ROOT__
預設找到專案的根路徑,利用這種方式即可定義網站後臺各級資料夾的路徑,便於更好的查詢相關檔案。
修改:實質上在ThinkPHP3.2中有__PUBLIC__
常量的設定。
__ROOT__
php常量在Thinkphp/ThinkPHP.php中定義
__PUBLIC__
模板常量在ThinkPHP\Library\Behavior\ContentReplaceBehavior.class.php 檔案中定義
<?php
namespace Behavior;
/**
* 系統行為擴充套件:模板內容輸出替換
*/
class ContentReplaceBehavior {
// 行為擴充套件的執行入口必須是run
public function run(&$content){
$content = $this->templateContentReplace($content);
}
/**
* 模板內容替換
* @access protected
* @param string $content 模板內容
* @return string
*/
protected function templateContentReplace($content) {
// 系統預設的特殊變數替換
$replace = array(
'__ROOT__' => __ROOT__, // 當前網站地址
'__APP__' => __APP__, // 當前應用地址
'__MODULE__' => __MODULE__,
'__ACTION__' => __ACTION__, // 當前操作地址
'__SELF__' => __SELF__, // 當前頁面地址
'__CONTROLLER__'=> __CONTROLLER__,
'__URL__' => __CONTROLLER__,
'__PUBLIC__' => __ROOT__.'/Public',// 站點公共目錄
);
// 允許使用者自定義模板的字串替換
if(is_array(C('TMPL_PARSE_STRING')) )
$replace = array_merge($replace,C('TMPL_PARSE_STRING'));
$content = str_replace(array_keys($replace),array_values($replace),$content);
return $content;
}
}
可以看出其中已經定義好了__PUBLIC__
路徑,假如需要重新定義,在相關的配置檔案中定義TMPL_PARSE_STRING
模板就會自動完成相同名稱的替換。
在ThinkPHP的模板中使用已定義的路徑,可以使用C方法
C('TMPL_PARSE_STRING.PUBLIC')
附錄:關於ThinkPHP中的U方法
U方法用於完成對URL地址的組裝,特點在於可以自動根據當前的URL模式和設定生成對應的URL地址,格式為:
U('地址','引數','偽靜態','是否跳轉','顯示域名');
在模板中使用U方法而不是固定寫死URL地址的好處在於,一旦你的環境變化或者引數設定改變,你不需要更改模板中的任何程式碼。
在模板中的呼叫格式需要採用 {:U('地址', '引數'…)}
的方式
基本用法
U方法的用法示例:
U('User/add') // 生成User模組的add操作地址
也可以支援分組呼叫:
U('Home/User/add') // 生成Home分組的User模組的add操作地址
當然,也可以只是寫操作名,表示呼叫當前模組的
U('add') // 生成當前訪問模組的add操作地址
除了分組、模組和操作名之外,我們也可以傳入一些引數:
U('Blog/read?id=1') // 生成Blog模組的read操作 並且id為1的URL地址
U方法的第二個引數支援傳入引數,支援陣列和字串兩種定義方式,如果只是字串方式的引數可以在第一個引數中定義,下面幾種方式都是等效的:
U('Blog/cate',array('cate_id'=>1,'status'=>1))
U('Blog/cate','cate_id=1&status=1')
U('Blog/cate?cate_id=1&status=1')
但是不允許使用下面的定義方式來傳引數:
U('Blog/cate/cate_id/1/status/1')
根據專案的不同URL設定,同樣的U方法呼叫可以智慧地對應產生不同的URL地址效果,例如針對:
U('Blog/read?id=1')
這個定義為例。
如果當前URL設定為普通模式的話,最後生成的URL地址是:
http://serverName/index.php?m=Blog&a=read&id=1
如果當前URL設定為PATHINFO模式的話,同樣的方法最後生成的URL地址是:
http://serverName/index.php/Blog/read/id/1
如果當前URL設定為REWRITE模式的話,同樣的方法最後生成的URL地址是:
http://serverName/Blog/read/id/1
如果你同時還設定了PATHINFO分隔符的話:
'URL_PATHINFO_DEPR'=>'_'
就會生成
http://serverName/Blog_read_id_1
如果當前URL設定為REWRITE模式,並且設定了偽靜態字尾為html的話,同樣的方法最後生成的URL地址是:
http://serverName/Blog/read/id/1.html
如果設定了多個偽靜態支援,那麼會自動取第一個偽靜態字尾新增到URL地址後面,當然你也可以手動在U方法裡面指定要生成的偽靜態字尾,例如:
U('Blog/read','id=1','xml')
就會生成
http://serverName/Blog/read/id/1.xml
路由支援
U方法還可以支援路由,如果我們定義了一個路由規則為:
'news/:id\d'=>'News/read'
那麼可以使用
U('/news/1')
複製程式碼
最終生成的URL地址是:
http://serverName/index.php/news/1
域名支援
如果你的應用涉及到多個子域名的操作地址,那麼也可以在U方法裡面指定需要生成地址的域名,例如:
U('Blog/[email protected]','id=1');
@後面傳入需要指定的域名即可。
此外,U方法的第5個引數如果設定為true,表示自動識別當前的域名,並且會自動根據子域名部署設定APP_SUB_DOMAIN_DEPLOY
和APP_SUB_DOMAIN_RULES
自動匹配生成當前地址的子域名。
如果開啟了URL_CASE_INSENSITIVE
,則會統一生成小寫的URL地址。
錨點支援
3.1.2版本開始,U方法還可以支援生成URL地址中的錨點,例如:
U('Blog/read#comment','id=1','html')
就會生成
http://serverName/Blog/read/id/1.html#comment
如果域名和錨點同時使用的話,注意順序為先錨點後域名,例如:
U('Blog/read#[email protected]','id=1');
相關推薦
ThinkPHP3.2中引入JS,CSS檔案路徑配置
在ThinkPHP3.2框架中,預設已經沒有Public檔案夾了。其中對於__PUBLIC__的定義也需要重新定義。這給筆者造成了很長時間的困擾,現在這個問題終於解決,分享出來給大家參照一下。 在ThinkPHP中config檔案中進行一下配置即可。 /
關於WEB-INF目錄不提供外部訪問及JSP引用 js,css 檔案路徑問題
在 web 專案開發過程中,我們常常使用到 JSP,以及對靜態資源,js,css 等引用,但是我們應該把這些資原始檔放在哪個目錄下面咧,怎麼引用。當然如果是前後端分離的專案倒不用考慮這些。WEB-INF:出於安全性的考慮,這個目錄是禁止外部直接訪問的,所以 JSP 頁面放在這
SpringMVC框架下前端jsp頁面引入js,css,img等檔案失敗的問題
初學mvc,今天在做一個小模組的時候發現jsp前端頁面寫的jquery語句無效,查了之後在發現要在jsp的page屬性里加上一個isELIgnored="false" 的屬性,然而加上之後還是用不了引入的.js, .css, .jpg等格式的檔案,怎麼辦呢,又去查資料
Maven專案引入JS,css等檔案的問題
今天在專案中引入JS,CSS檔案遇到的問題,路徑明明是對的,但就是沒有效果,專案結構如下所示: 查資料發現,需要做如下配置,首先在web.xml中進行攔截配置: <servlet-mapping> <servlet-name >de
django1.9引入js,css文件
AS tails base detail 不同 files load rip cti settings.py STATIC_URL = '/static/' STATICFILES_DIRS = ( os.path.join(BASE_DIR,
在HTML中引入多個css檔案
在HTML中引入css的兩個方法:匯入式和連結式。 匯入式和連結式的目的都是將一個獨立的css檔案引入一個檔案中,二者的區別不大,事實上,二者最大的區別在於連結式使用html的標記引入外部css檔案,而使用匯入式則是使用css規則引入外部css檔案。因此它們的語法也不同。 1. 連結式
vue中引入js,然後new js裡的方法
阿里雲Web播放器Web端使用SDK說明:https://help.aliyun.com/document_detail/51991.html?spm=5176.11065259.1996646101.searchclickresult.15a92458LoTQhA vue專案中要使用阿里雲
關於SpringMVC下無法引用外部的js,css檔案錯誤
環境Spring Tool suite。 spring 3.2.9 +hibernate 3 問題描述: 需要在一個頁面引用bootstrap這個外掛(這是一個做頁面的吧,我也採用,感覺逼格挺高啊),然後在引用的時候總是會出現 No mapping f
struts2匯入js,css檔案無法生效
1.在jsp檔案中 匯入jss檔案 ../表示上一級目錄 但是引入外部css總是沒有效果,通過火狐除錯臺,發現js與css檔案狀態碼為404,得出是路徑問題, struts2由於是轉發路徑,jsp檔案
jsp.html中的引入js.css檔案的問題,以及檔案路徑詳解。
首先我把檔案的位置已截圖的形式發出(eclipse工作欄), 看清楚各個檔案路徑的位置。 </pre>其中test1.css中寫了一個測試程式碼:</p><p><pre name="code" class="html">.AA
在php模版檔案和html檔案中引入js,css檔案錯誤解決
1,html檔案引入js一些資原始檔時候:可以寫相對路徑來引入,<script src="../lib/layer/layer.js"></script> <script src="../lib/jquer.min.js">&l
在專案中使用Ext需要引入的Js和Css檔案
<link rel="stylesheet" type="text/css" href="../../resources/css/ext-all.css" /> <script typ
web.xml中的dispatchservlet後,js,css,甚至gif都不能正常顯示
startup view details article 的人 核心 默認 href com 這個可以說是很多初學Springmvc的人都會碰到一個令人頭痛的問題 那就是為什麽我配置好web.xml中的dispatchservlet後,js,css,甚至gif都不能正常顯示
專案中引入JS檔案中的方法
在單個的Vue檔案中,寫入一些體積比較大的方法,顯得很累贅,就把這些放到一個JS中,然後再引入 引入的過程中出現了一些小問題,比如我們在 src/publicMethod/tool.js中,寫入了一個方法 //宣告一個方法 function test(){ ... } //將其暴露
Go語言開發:在HTML模板中引入js及其他靜態檔案
問題: 用go語言開發,在html頁面中,引入js檔案無效,寫在js檔案中的函式無法呼叫,也沒有報錯;js程式碼直接寫html頁面中,可以呼叫,但是看起來太亂了,不舒服。這個問題困擾了好久,在網上搜了好多資料都無法解決問題,今天終於解決了,TND,看到答案的時候,原來這麼簡單。 參考
SpringMVC訪問靜態檔案,如:jpg,js,css等,標籤的使用
如何你的DispatcherServlet攔截 *.do這樣的URL,就不存在訪問不到靜態資源的問題。如果你的DispatcherServlet攔截“/”,攔截了所有的請求,同時對*.js,*.jpg的訪問也就被攔截了。 目的:可以正常訪問靜態檔案,不要找不到靜態
根據正則表示式匹配頁面中js和css檔案
// 匹配 List<string> srcList = new List<string>(); List<string> linkList = new List<string>();
用了springmvc為何JS,CSS等檔案就是訪問不到
這個可以說是很多初學Springmvc的人都會碰到一個令人頭痛的問題 那就是為什麼我配置好web.xml中的dispatchservlet後,js,css,甚至gif都不能正常顯示了 我們來看看我們配置的web.xml <!-- 核心控制器 --> <s
web-inf 目錄下的jsp怎麼引用外部檔案:js,css等
在非spring MVC攔截“/“的情況下: web-inf是受保護的,不能直接訪問 下面是解決方法<c:set value="${pageContext.request.contextPath}" var="path" scope="page"/> <
iOS 專案本地匯入html檔案,js和css檔案顯示不出來
最近一直在做h5相關,發現本地html模板匯入進專案後,js和css並顯示不出來 然後找了很多資料,發現是路徑的問題 一個是 Create groups for any added folders (建立虛擬結構-包結構) 一個是 Create folder r