-
如果希望在原有內容基礎上添加新的內容,可用{__block__}即可解析為原有內容
查看全部 -
繼承{extend name="common/*" /},當內容需要與公共部分不同時,只需要采用相同的標簽,更改為不同的內容即可,{block name=""}{/block},同一模板內不允許有同樣的block,如果希望在原有內容基礎上添加新的內容,可用{__block__}即可解析為原有內容
查看全部 -
包含和繼承
視圖層頁面通過include方式加載公共頁面
{inclue file="common/nav" /}
繼承 一個頁面呢可繼承另外的頁面
{extend file="common/base" /}
同一個頁面中不允許有兩個同樣的block name
block表示替換被繼承的頁面中指定的樣式或者標簽
{block name="title"}
要替換的值
{/block}
layout
layout 'layout_on' =>'true' 'layout_name'=>'a'開啟后默認的訪問view文件機制發生變化,
會訪問view/a.html,
a.html 中的{__CONTENT__}的內容會被index控制器下指定方法對應view/index/*.html文件內容替換,
從而 達到訪問不同的方法,改方法對應的view文件會顯示不同的內容
若要改變其他共有的部分,還可通過控制器層使用$this -> assign傳值
通過給方法傳遞參數() a.html可以顯示不同的內容
查看全部 -
5-7 條件判斷標簽
{switch name="'Think.get.level"}
{case value="1|2"}<p>銅牌會員</p>{/case}? ?1和2可以共用 用|分割
{case value="3"}<p>黃金會員</p>{/case}
{case value="4"}<p>鉆石會員</p>{/case}
{default /} <p>游客</p>
{/switch}
value="1,2,3" type="in" ->? ? ? 是否其中一個
value="1,2,3" type="notin" ->? ?是否不是其中一個
value="1,3" type="between" ->? ?是否1-3之間
value="1,3" type="notbetween" ->是否不是1-3之間
{range name="Think.get.level" value="1,2,3" type="in"}
<p>當前level是1, 2, 3中的一個</p>
{else/}
<p>當前level不是1, 2, 3中的任何一個</p>
{/range}
in notin between notbetween均有獨立標簽
{in name="Think.get.level" value="1,2,3"}
{else/}
{/in}
判斷變量/常量名是否被定義
{defined name="變量/常量名"}
{else/}
{/defined}
不推薦使用
()為一個條件 可用 and or?
{if condition="($a == 1) and ($b == 1)"}
{else/}
{/if}
查看全部 -
比較標簽:eq;判斷前面的值是否等于后面的值,跟if差不多。equal跟eq一樣,只是eq的別名
neq:判斷前面的值是否不等于后面的值,是eq的相反。notequal跟neq一樣,同上。
gt:判斷前面的值是否大于后面的值
lt:判斷前面的值是否小于后面的值
egt:判斷前面的值是否大于等于后面的值
elt:判斷前面的值是否小于等于后面的值
查看全部 -
eq neq 等標簽使用
{eq name="a" value="$b"}
{else/}
{/eq}
查看全部 -
for標簽
{for start="1" end="10" step="2" name="k"}
{$k}
{/for}
查看全部 -
foreach 用法
{foreach name="list" item="vo" key="s"}
{$s} : {$vo.name} : {$vo.email}
{/foreach}
查看全部 -
模板循環標簽:
{volist name="list" id="data" offset="1" length="1" mod="2" empty="沒數據" key="i"}
{$data.name}? -- {$mod} - {$i}
{/volist}
--- volist --- (name 對應控制器assign定義的二維數組,id相應vaule值,offset定義從第幾條記錄開始讀取,length控制輸出的條數,mod對某個值進行取余,empty在對象沒數據時起作用,empty中可以接收控制器定義的變量,變量也可配帶html標簽。$i 的值相當于key,代表第幾次循環)
查看全部 -
可以直接在模板中對變量進行調整,如md5加密 {$name|md5},截取字符長度 {$content|substr=0,8} , 時間 {$time|date="Y-m-d", ###}
如果想進行變量多個調整可以類似, {$name|md5|strtoupper}
同時,可在模板中對變量進行初始值設置,{$name|default="Jakob"}
利用thinkphp的view注釋,html編譯后用戶是無法查閱的,形如{/* 這里是thinkphp view 的注釋 */}
查看全部 -
模板中可以直接使用系統框架提供的$Think變量,獲取來自系統中所有變量的值 模塊還支持直接寫入php原生代碼,但是對維護不利,建議不使用此類操作(在模板中使用原生PHP標簽:<?php ?>直接在里面和之前一樣寫php代碼即可??梢允褂媚0遄兞浚到y變量。但是不建議使用原生,混編維護起來復雜。大多數邏輯在控制器完成。)
在模板中獲取常量:{$Think.const.APP_PATH} 或者 {$Think.APP_PATH},兩種方式均可;
?注意.env必須加上PHP_前綴,并且所有字母大寫查看全部 -
thinkphp5中變量賦值可通過以下四種方法:
①$this->assign('變量名',$變量值(名)); //在命名空間下引入think\Controller;
②$this->view->變量名 = '變量值'; //在命名空間下引入think\View;
③View::share('變量名',$變量名); //在命名空間下引入think\View;
④return $this->fetch('html頁面',[
'變量名' ?=> ‘變量值',
],[
'大寫字母' ?=> ?'替換內容'
]); //在命名空間下引入think\Controller;
系統提供的路徑常量有:
__URL__ //路由地址
__ROOT__ //根目錄
__STATIC__ //static目錄
__CSS__ //css目錄
__JS__ //js目錄
可自行在config目錄中替換,替換函數為:
’view_replace_str‘ ? => [
'常量名' => '替換路徑'
]
查看全部 -
index/controller下的return view(); ->默認模板的地址是view/index/index.html
return view('upload'); ->view/index/upload.html
return view('public/upload'); ->view/public/upload.html
return view('./123.html'); ->www/public/123.html(即入口文件的public)
return view('./html/123.html'); ->www/public/html/123.html(注意:如果命名為index.html,首先會訪問public/index.html,即入口文件的index.html)
還可以通過調用Controller控制器的fetch方法 調用指定的view文件
調用前需要加載use think\Controller 命名空間,并在指定的應用控制器中extends Controller類
$this-> fetch()各參數同view()助手函數相同,區別是fetch()方法也可使用
$this -> assign()方法傳遞變量的視圖層(此方法需繼承Controller類才可調用)即tp3.x版本相同,view()方法不能調用此方法
與tp3.x版本不同的是,$this->display()是直接在控制器中輸出要顯示的字符串,原3.x版本表示的是調用視圖層,也可使用$this -> assign()方法,webserver項目中不建議使用$this->display()方法,這會導致視圖層不可用
查看全部 -
目錄使用小寫+下劃線的方式命名
類庫函數名均以.php結尾
類的文件名均以命名空間定義,并且命名空間和類庫文件所在路徑一致
查看全部 -
config.php
模塊配置中? return[
????'default_return_type'??????=>????'json'
];
如果是xml? ?直接修改值xml??
查看全部
舉報