thinkphp5.0學習(九):TP5.0視圖和模板

原文地址:http://blog.csdn.net/fight_tianer/article/details/78602711php

1、視圖

1.加載頁面

1.繼承系統控制器類
    return $this->fetch(參數1,參數2,參數3,參數4);
    參數1(字符串):模板渲染
    參數2(數組):模板賦值
    參數3(數組):模板替換
2.使用助手函數
    return view();
    參數與fetch相同
3.使用view類(不建議使用)
    $view=new View();
    return $view->fetch();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

2.模板賦值

1.控制器類中的assign方法
    $this->assign('name',$name);
    $this->assign('city',$city);
    $this->assign(['name'=>$name,'city'=>$city]);
    return view();
2.經過fetch方法
    return $this->fetch('',['name'=>$name,'city'=>$city]);
3.助手函數
    return view('',['name'=>$name,'city'=>$city]);
4.對象賦值
    $this->view->name="甜甜";
    $this->view->city="太原";
    return view();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

3.模板替換

1.配置文件更改(全局替換,全部頁面中都被替換)(config文件中)
    // 視圖輸出字符串內容替換
    // 只有頁面被替換,也就是在php頁面中獲取不到__HOMES__
    'view_replace_str'       => [
        '__HOMES__'=>'/static/home/public'
    ],
2.部分替換
    1.fetch方法
    // fetch參數:頁面,變量分配,視圖輸出字符串內容替換
        return $this->fetch('',[],['__HOMES__'=>'/static/home/public']);
    2.助手函數
        return view('',[],['__HOMES__'=>'/static/home/public']);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

4.模板渲染

1.默認加載當前模塊,當前控制器,當前方法對應的頁面
        return $this->fetch();
2.指定加載的頁面
        // 加載當前模塊,當前控制器下,用戶定義的頁面
        return $this->fetch('jiazai');
        // 加載當前模塊,user控制器下 jiazai頁面
        return $this->fetch('user/jiazai');
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

2、模板

1.模板標籤

1.普通標籤(刪除了runtime下的temp下的緩存文件再測試)css

// 模板引擎普通標籤開始標記 'tpl_begin' => '{', // 模板引擎普通標籤結束標記 'tpl_end' => '}',
  • 1
  • 2
  • 3
  • 4

2.標籤庫標籤(刪除了runtime下的temp下的緩存文件再測試)html

// 標籤庫標籤開始標記 'taglib_begin' => '}', // 標籤庫標籤結束標記 'taglib_end' => '{', {for start="1" end="10"} {$i} {/for}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

2.輸出變量

1.字符串數組

$this->assign("str","甜甜"); <h2>{$str}</h2>
  • 1
  • 2

2.數組緩存

$data=[ 'name'=>'張三', 'age'=>18, 'sex'=>'男' ]; $this->assign("data",$data); <h2>{$data['name']}<h2> <h2>{$data['age']}<h2> <h2>{$data['sex']}<h2>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

3.使用函數bash

//1.使用豎線,參數寫在等於號後面 {$data.name|md5} <?php echo (md5($data['name'])); ?> {$time|date="y-m-d H:i:s",###} <?php echo (date("y-m-d H:i:s",$time)); ?> {$name|md5|strtoupper|substr=0,10} <?php echo (substr(strtoupper(md5($name)),0,10)); ?> //2.冒號開始 {:md5($pass)} {:date('Y-m-d H:i:s',$time)} 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

4.默認值app

{$user.nickname|default="這傢伙很懶,什麼也沒留下"}
  • 1

5.三元運算符函數

{$status? '正常' : '錯誤'} {$status>2? '正常' : '錯誤'}
  • 1
  • 2

6.算數運算符佈局

{$a}+{$b}={$a+$b} {$a}-{$b}={$a-$b} {$a}*{$b}={$a*$b} {$a}/{$b}={$a/$b} {$a}%{$b}={$a%$b} {$a++} {$b--}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

在使用運算符的時候,再也不支持常規函數用法,例如:測試

{$user.score+10} //正確的 {$user['score']+10} //正確的 {$user['score']*$user['level']} //正確的 {$user['score']|myFun*10} //錯誤的 {$user['score']+myFun($user['level'])} //正確的
  • 1
  • 2
  • 3
  • 4
  • 5

7.原樣輸出

{literal} Hello,{$name}! {/literal}
  • 1
  • 2
  • 3

8.系統變量

1.系統變量($Think開頭) 支持輸出 $_SERVER、$_ENV、 $_POST、 $_GET、 $_REQUEST、$_SESSION和 $_COOKIE變量。 <h2>{$_GET['id']}</h2> <h2>{$Think.get.id}</h2> <h2>{$_SERVER['HTTP_HOST']}</h2> <h2>{$_SERVER.HTTP_HOST}</h2> <h2>{$Think.SERVER.HTTP_HOST}</h2> 2.常量輸出(常量詳見附錄常量參考) <h2>{$Think.const.app_path}</h2> <h2>{$Think.const.ds}</h2> <h2>{$Think.const.think_path}</h2> <h2>{$Think.const.is_win}</h2> <h2>{$Think.const.THINK_VERSION}</h2> 3.配置文件輸出(查看配置文件) <h2>{$Think.config.app_namespace}</h2> <h2>{$Think.config.default_lang}</h2>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

9.請求參數 
支持直接使用request對象

{$Request.get.id} {$Request.param.name}
  • 1
  • 2

以$Request.開頭的變量輸出會認爲是系統Request請求對象的參數輸出。 
支持Request類的大部分方法,但只支持方法的第一個參數。

10.模板註釋

{/* 註釋內容 */ } 或 {// 註釋內容 } {/* 這是模板 註釋內容*/ }
  • 1
  • 2
  • 3
  • 4

11.頁面包含(能夠包含屢次)

{include file='Public/header'} <div>body</div> {include file='Public/footer'}
  • 1
  • 2
  • 3

12.模板佈局

1.在視圖目錄下新建文件layout.html(app\admin\view)
2.在layout頁面中將全部的公共頁面保留,非公共頁面使用{__CONTENT__}替代(__CONTENT__只能存在一個)
3.頁面中引入模板佈局{layout name="layout" /}+非公共區域內容
  • 1
  • 2
  • 3
  • 4

13.模板繼承

1.在視圖目錄下新建base.html
2.在base.html中對頁面進行分割
    <!DOCTYPE html>
    <html>
        <head>
            <title></title>
        </head>
        <body>
            <div>
                {block name="nav"}{/block}
            </div>
            <div>
                {block name="menu"}{/block}
                {block name="main"}{/block}
            </div>
            <div>
                {block name="footer"}{/block}
            </div>
        </body>
    </html>
3.使用繼承
    {extend name="base" /}
    {block name="nav"}
        {include file="public/header" /}
    {/block}
    {block name="menu"}
        {include file="public/menu" /}
    {/block}
    {block name="main"}
        {include file="public/content" /}
    {/block}
    {block name="footer"}
        {include file="public/footer" /}
    {/block}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

14.內置標籤

1.volist循環 {volist name="data" id="val" offset="5" length="3"} <p>{$key}:{$val.id}:{$val.name}</p> {/volist} //區分奇數偶數 {volist name="data" id="val" mod="2" empty="暫時沒有數據"} {eq name="mod" value="0"} <p style="color: red;">{$key}:{$val.id}:{$val.name}</p> {/eq} {eq name="mod" value="1"} <p>{$key}:{$val.id}:{$val.name}</p> {/eq} {/volist} name 須要遍歷的數據 id 相似於foreach中的value offset 截取數據的起始位置 length 截取數據的個數 mod 奇數偶數 empty 數據爲空時使用 key 編號 2.foreach循環 {foreach name="data" item="val"} <p>{$key}{$val.id}{$val.name}</p> {/foreach} name 須要遍歷的數據 item 相似於foreach中的value key 相似於foreach中的key 3.for循環 start 開始值 end 結束值 comparison 比較條件(參看下表),默認lt step 步數 name 循環變量(默認i) //正序 {for start="0" end="10" comparison="elt" step="2" name="i"} {$i} {/for} //倒敘 {for start="10" end="0" comparison="gt" step="-1" name="i"} {$i} {/for}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
標籤 含義
eq或者 equal 等於
neq 或者notequal 不等於
gt 大於
egt 大於等於
lt 小於
elt 小於等於
heq 恆等於
nheq 不恆等於
4.比較標籤 {eq name="a" value="10"}正確{/eq} {neq name="a" value="10"}正確{/eq} {gt name="a" value="10"}正確{/eq} {egt name="a" value="10"}正確{/eq} {lt name="a" value="10"}正確{/eq} {elt name="a" value="10"}正確{/eq} {heq name="a" value="10"}正確{/eq} {nheq name="a" value="10"}正確{/eq} 5.條件判斷 {switch name="week"} {case value='1'} 週一{/case} {case value='2'} 週二{/case {case value='3'} 週三{/case} {case value='4'} 週四{/case} {case value='5'} 週五{/case} {case value='6'} 週六{/case} {default /} 週日 {/switch} 6.in和notin比較相似 {in name="week" value="0,1,2,3,4,5,6"} 合法的數據 {else /} 不合法的數據 {/in} 7.between和notbetween {between name="week" value="0,6"} 合法數據 {else /} 不合法的數據 {/between} 8.原生php {php} echo "123"; {/php} <?php echo "123"; ?> 9.嵌套使用 //隔行變色 {volist name="data" id="val"} {if condition="$key % 2"} <p style="color: red;">{$key}{$val.id}{$val.name}</p > {else /} <p style="color: pink;">{$key}{$val.id}{$val.name}</p > {/if} {/volist} //三行變色 {volist name="data" id="val"} {php} $sw=$key%3; {/php} {switch name="sw"} {case value="0"} <p style="color: red;">{$key}{$val.id}{$val.name}</p > {/case} {case value="1"} <p style="color: blue;">{$key}{$val.id}{$val.name}</p > {/case} {case value="2"} <p style="color: green;">{$key}{$val.id}{$val.name}</p > {/case} {/switch} {/volist} //多維數組遍歷 {volist name="type" id="val"} <h2>{$val.name}</h2> {volist name="val.product" id="goods"} <p>{$goods.name}{$goods.price}</p > {/volist} {/volist}
相關文章
相關標籤/搜索