天天看點

PHP:ThinkPHP5.0視圖View模闆文法1、模闆路徑2、模闆渲染3、模闆語言3、模闆布局總結

1、模闆路徑

控制器位址

app/index/controller/Index      
傳參示例 說明 擷取模闆路徑
view() 預設模闆的位址 app/index/view/index/index.html
view(‘upload’) 修改檔案 app/index/view/index/upload.html
view(‘public/upload’) 修改目錄 app/index/view/ipublic/upload.html
view(’./index’) 入口檔案同級的模闆檔案 public/index.html
view(’./html/index’) public/html/index.html

注意:如果命名為index.html,首先會通路public/index.html,即入口檔案的index.html)

2、模闆渲染

app/index/controller/Index

view('template', ['name'=>'Peng shiyu'])      

app/index/view/index/template.html

{$name}      

(1)使用assign和fetch

use think\Controller;

class Index extends Controller
{
    public function index()
    {
        $this->assign('name', 'Peng shiyu');

        return $this->fetch('index', [
           'username'=> 'Tom',
           'password'=> '123456',
        ], [
            'STATIC' => 'THIS IS STATIC'
        ]);
    }      

模闆替換

{$name}
{$username}
{$password}
STATIC      

(2)使用display傳回字元串

namespace app\index\controller;

use think\Controller;

class Index extends Controller
{
    public function index()
    {
        $this->assign('name', 'Peng shiyu');

        return $this->display('我的名字叫:{$name} 今年{$age} 歲了', [
            'age'=> 23
        ]);
    }      

顯示:

我的名字叫:Peng shiyu 今年23 歲了      

變量輸出

模闆中的變量花括号之間不能有空格

可修改變量前後辨別符

template.tpl_begin
template.tpl_end      

(3)變量指派(四種)

$this->assign('變量名',$變量值(名));      //繼承 think\Controller;

$this->view->變量名 = '變量值';              //繼承 think\Controller;

View::share('變量名',$變量名);               //引入think\View;

return $this->fetch('html頁面',[
    '變量名'  => ‘變量值',
    ],[
    '大寫字母'  =>  '替換内容'
]);                                 // 繼承 think\Controller;      

系統提供的路徑常量有:

__URL__         //路由位址
__ROOT__        //根目錄
__STATIC__      //static目錄
__CSS__         //css目錄
__JS__          //js目錄      

可自行在config目錄中替換,替換函數為:

’view_replace_str‘      =>  [
    '常量名'   =>  '替換路徑'
]      

優先級

動态配置 > 自定義配置 > 系統配置

3、模闆語言

(1)變量函數

在模闆中使用系統變量

{$Think.server.HTTP_HOST}
{$Think.env.PHP_APP_STATUS}
{$Think.session.name}
{$Think.cookie.id}

{$Think.request.id}
{$Think.get.id}
{$Think.post.id}
{$Think.const.APP_PATH}     // 擷取系統常量
{$Think.APP_PATH}       // 擷取系統常量,可省略const,直接加常量名      

模闆中嵌入php代碼(不建議)

<?php
    $a = 1;
    $b = 2;
    if($a > $b)
    {
        echo 'a > b';
    }
    else
    {
        echo 'a < b';
    }
?>      

模闆函數

{$email|md5}
{$email|md5|strtoupper}
{$email|default='[email protected]'}
{$email|substr=0,8}
{$email|substr=###,0,8}
{$time|date='Y-m-d',###}      

###

起占位的作用,如果是第一個參數可以省略不寫

計算表達式

$a+$b
$a-$b
$a*$b
$a/$b
$a%$b
$a+$b*$c
$a++
++$a
$a--
--$a      

原樣輸出

{literal}
    {$email}
{/literal}      

注釋

<!-- html注釋 使用者可見 -->

{/* 模闆注釋 使用者不可見 */}      

(2)循環标簽

php代碼

public function index()
    $list = [
{
        'user1' => [
            'name' => 'value1',
        ],
        'user2' => [
            'name' => 'value2',
        ]
    ];

    $this->assign('list', $list);
    return $this->fetch('index');
}      

volist循環

{php}
    $empty = "<h1>内容是空的<h2>";  // 注意結尾的分号
{/php}


{volist name='list' id='ov' key='i' offset='0' length='2' mod='1' empty='$empty'}
    {$mod}  // 取餘結果
    {$i}   // 循環次數 預設i
    {$ov.name}
{/volist}      

foreach循環

{foreach $list as $vo}
    {$vo.name}
{/foreach}      
{foreach name='list' item='vo' key='key'}
    {$key} <!-- 數組下标 預設$key -->
    {$vo.name}
{/foreach}      

for循環

{for start='1' end='10' step='2' name='i'}
    {$i} <!-- 預設i-->
{/for}      

(3)比較标簽

相等

<!-- eq 或者 equal -->
{eq name='a' value='$b'}
    <p>equal</p>
{else}
    <p>not equal</p> 
{/eq}      

不相等

<!-- neq 或者 notequal -->
{neq name='a' value='10'}
    <p>not equal</p>
{else}
    <p>equal</p> 
{/neq}      

大于

<!-- gt -->
{gt name='a' value='10'}
    <p>greater than</p>
{else}
    <p>not greater than</p> 
{/gt}      

小于

<!-- lt -->
{lt name='a' value='10'}
    <p>less than</p>
{else}
    <p>not less than</p> 
{/lt}      

大于等于

<!-- egt -->
{egt name='a' value='10'}
    <p>equal or greater than</p>
{else}
    <p>less than</p> 
{/egt}      

小于等于

<!-- elt -->
{elt name='a' value='10'}
    <p>equal or less than</p>
{else}
    <p>greater than</p> 
{/elt}      

(4)條件判斷

switch

{switch name="Tink.get.level"}
    {case value="1|2"}1{/case} <!--多值豎線分隔-->
    {case value="3"}2{/case}
    {case value="4"}3{/case}
    {default /}4
{/switch}      

range

<!-- in -->
{range name="Think.get.level" value="1,2,3" type="in"}
    <p>in</p>
{else}
    <p>not in</p>
{/range}

{in name="Think.get.level" value="1,2,3"}
    <p>in</p>
{else}
    <p>not in</p>
{/in}

<!-- notin -->
{range name="Think.get.level" value="1,2,3" type="notin"}
    <p>not in</p>
{else}
    <p>in</p>
{/range}

{notin name="Think.get.level" value="1,2,3"}
    <p>not in</p>
{else}
    <p>in</p>
{/notin}

<!-- between -->
{range name="Think.get.level" value="1,3" type="between"}
    <p>between</p>
{else}
    <p>not between</p>
{/range}

{range name="Think.get.level" value="1,3" type="notbetween"}
    <p>not between</p>
{else}
    <p>between</p>
{/range}
      

defined

<!-- defined -->
{defined name="APP_PATH"}
    <p>defined</p>
{else}
    <p>not defined</p>
{/defined}      

if

<!-- if AND/OR-->
{if condition="($Think.get.level == 1) AND ($Think.get.id == 10)"}
    <p>success</p>
{else}
    <p>fail</p> 
{/if}      

3、模闆布局

(1)模版引入

{include file="common/nav" /}      

(2)模闆繼承

{extend name="common/base" /}      

被繼承的檔案預留坑位, 繼承後可以重寫

{block name="ID"}
    原始内容
{/block}      

繼承後可以保留原有内容

{block name="ID"}
    重寫内容 + {__block__}
{/block}
      

(3)layout布局

開啟布局配置 config.php

'template'=>[
    'layout_on'=>true, 
    'layout_name'=>'layout'
]
      

app/index/view/layout.html 預留坑位

{__CONTENT__}      

總結

1、安裝

2、配置 config Config

3、url路由

4、請求參數

5、響應

6、模闆 标簽,流程控制,模闆布局,引入,繼承