本篇文章主要介紹PHP Smarty 定界符衝突該如何處理,感興趣的朋友參考下,希望對大家有所協助。
預設定界符"{"與css和js中的"{"衝突,該如何處理?
1. 所有以{ 開頭的地方,都空一格。(Smarty只會解析定界符內的內容,且左定界符後不能有空格)
2. 將css和js以外部的方式引入。(Smarty不會解析外部檔案)
3. 使用內建函數 literal。
4. 更改定界符。
解決衝突最好的方式:外部引入css和js,對於內部出現的使用literal。
index.php(後端):
<?php //1.引入smarty類 include 'libs/Smarty.class.php'; //2.執行個體化smarty對象 $smarty = new Smarty(); //3.設定相關屬性 $smarty->template_dir = "templates/"; //模板目錄 $smarty->compile_dir = "templates_c"; //編譯目錄 //修改定界符 $smarty->left_delimiter = '<{'; //自訂定界符,預設是"{" $smarty->right_delimiter = '}>'; //4.分配資料 $smarty->assign('title','smarty模板引擎'); $smarty->assign('content','smarty模板引擎 是一個強大的模板引擎!'); //5.載入視圖 $smarty->display('index.html');
index.html(前端視圖):
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>{$title}</title> <style> <{literal}> <{* 通過literal函數解決定界符"{"在CSS和JS中的衝突。Smarty會自動解析定界符內的內容(不會解析引入的外部檔案)。也可以通過自訂定界符解決衝突。 *}> h1{color:tomato; font-size:40px;} p{color: #00f;} <{/literal}> </style> </head> <body> <h1><{$title}> $title</h1> <{* 只有定界符內的內容才會被Smarty解析,且左定界符後不能有空格 *}> <p><{$content}></p> <p><?php echo $title;?></p> <{* 不會解析PHP代碼 *}> <{* 這是注釋 *}> </body> </html>