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、模闆 标簽,流程控制,模闆布局,引入,繼承