1 如何徹底去除視圖文件中的PHP代碼
- html代碼與PHP代碼分離,其實就是前端人員與程序員分離
- 思路:查找替換
2 Smarty
- smarty就是一個類文件
2.1 舉例
2.2 Smarty常用配置
2.2.1 左右定界符
左邊界符:$smarty->left_delimiter="<{";
右邊界符:$smarty->right_delimiter="}>";
2.2.2 smarty常用目錄的配置
- smarty類文件中的構造方法對所有的目錄進行了初始化
- (1)設置或讀取視圖文件目錄
- 設置視圖文件目錄:$smarty->setTemplateDir(新目錄文件)
- 讀取視圖文件目錄:$smarty->getTemplateDir()
- (2)其他目錄的設置和讀取方法
- 編譯目錄的設置:$smarty->setCompileDir()
- 編譯目錄的讀取:$smarty->getCompileDir()
- 配置目錄的設置:$smarty->setConfigDir()
- 配置目錄的讀取:$smarty->setConfigDir()
3 smarty中的變量
在PHP中,能用smarty解決的,儘量不要使用PHP語法
3.1 普通變量
- 所有的PHP變量,都可以傳遞到視圖文件來使用
- 但是,在視圖中,對象和資源變量,不常用
- 在模板中,讀取數組的元素,可以使用中括號語法和點語法
3.2 保留變量
3.2.1 訪問頁面請求變量
- 所有的超全局數組變量,可以在視圖文件中直接使用
- smarty獲取超區局變量
{$smarty.get.參數}
{$smarty.post.參數}
{$smarty.request.參數}
{$smarty.server.參數}
{$smarty.session.參數}
{$smarty.cookie.參數}
{$smarty.files.參數}
3.2.2 訪問PHP中的預定義變量**
- {$smarty.const.常量名}
3.2.3 smarty時間戳**
- {$smarty.now}
- 格式化時間戳:{$smarty.now|date_format:’%Y-%m-%d %H:%M:%S’}
3.3 配置文件變量
3.3.1 定義配置文件
- 設置配置文件的工作目錄:$smarty->setConfigDir()
- 讀取配置文件的工作目錄:$smarty->getConfigDir()
- 配置文件拓展名:.conf、.ini
- 配置文件的註釋:#
- 一行只能寫一個配置
- 格式是:變量名=變量值
- 變量名不帶$符號,變量值不帶引號
3.3.2 在視圖文件中,如何訪問配置變量
<!--加載配置文件-->
<{config_load file="myConfig.conf"}>
<!--讀取配置文件參數-->
<{#a#}><br>
<{$smarty.config.b}><br>
<{$smarty.config.c}><br>
3.3.3 配置文件變量分組
- 使用中括號對配置文件進行分組
3.3.4 在視圖文件讀取分組的配置變量
- <{config_load file=“myConfig.conf” section=“tw”}>
4 smarty中的循環 foreach
4.1 foreach語法格式
- foreach可以遍歷所有類型的數據,包含,枚舉數組、關聯數組、混合數組、多維數組
- {foreach $arr as $key=>$value}
循環的內容
{/foreach} - 面向非程序員的寫法
{foreach from=’ ’ key=’ ’ item=’ '}
{/foreach}
4.2 輸出一維數組
4.3 輸出二維數組
4.4 foreach常用屬性
參數 | 說明 |
---|---|
@key | 輸出當前值的索引,可能是整形索引,也可能是字符索引 |
@index | 當前數組索引,從0開始計算 |
@iteration | 當前循環的次數,從1開始計算 |
@first | 當首次循環時,值爲true |
@last | 當最後一次循環時,值爲true |
@total | 整個循環的次數,可以在foreach內部或外部使用 |
5 smarty中的循環 section
5.1 foreach語法格式
- section循環,與PHP的for循環相似
- for循環可以指定循環起點、步長值、最大循環次數
- for只能遍歷枚舉數組,數組下標必須是從0開始的正整數
- for不能遍歷關聯數組(數字下標是字符串)
- {section name=’ ’ loop=’ ’ start=’ ’ step=’ ’ max=’ '}
{/sextion}
參數 | 說明 |
---|---|
name | 每次循環的索引,相當於$i |
loop | 循環的數組變量 |
start | 循環的初始值,默認爲0,從第1個元素開始循環 |
step | 每次循環的步長值,默認爲1 |
max | 最大循環次數 |
name和loop屬性是必須的
5.2 遍歷一維枚舉數組
5.3遍歷二維數組
6 smarty中的條件判斷 if
- PHP中的運算符在smarty中都可以使用
6.1 if三種語法結構
-
(1)只判斷true的情況
{if 條件判斷 }
條件爲true執行的代碼
{/if} -
(2)既判斷true,也判斷false
{if 條件判斷 }
條件爲true執行的代碼
{else}
條件爲false執行的代碼
{/if} -
(3)多條件判斷
{if 條件1 }
執行的代碼
{elseif 條件2 }
執行的代碼
{elseif 條件3 }
執行的代碼
{else}
執行的代碼
{/if}
6.2 if中的運算符
6.3 應用舉例:表格隔行變色
7 smarty中的變量調節器
7.1
- 變量調節器,就是對變量進行格式的函數,對變量進行格式化輸出
- 語法格式:{$var |調節器1:參數1:參數2:參數N |調節器2 |調節器3····}
7.2 常用變量調節器
調節器 | 說明 | 對應PHP的函數 |
---|---|---|
upper | 轉成全大寫 | strtoupper() |
lower | 轉成全小寫 | strtolower() |
nl2br | 將\n換行符,轉成<br/> | nl2br() |
replace | 查找替換 | str_replace() |
date_format | 時間戳格式化 | date() |
truncate | 截取字符串 | substr()或mb_substr() |
轉成全大寫:<{$tittle|upper}><br>
轉成全小寫:<{$tittle|lower}><br>
查找替換:<{$tittle|replace:"we":"we don't"}><br>
轉成全大寫:<{$tittle|upper}><br>
當前時間戳:<{time()}><br>
當前時間戳:<{$smarty.now}><br>
格式化時間戳:<{date('Y-m-d H:i:s',time())}><br>
格式化時間戳:<{$smarty.now|date_format:'%Y-%m-%d %H:%M:%S'}>
<{$tittle|truncate:10:''}><br>
<{$tittle|truncate:10}>