TP6中常用視圖,模板操作


TP6中常用視圖操作

第一步:安裝模板引擎

composer require topthink/think-view
 

第二步:模板賦值和加載模板:

引入模板操作類:
use think\facade\View;
 
模板賦值
// 模板變量賦值
View::assign('name','ThinkPHP');
View::assign('email','thinkphp@qq.com');
// 或者批量賦值
View::assign([
    'name'  => 'ThinkPHP',
    'email' => 'thinkphp@qq.com'
]);
加載模板

 return View::fetch('index');

 或者使用助手函數:

return view('index', [
    'name'  => 'ThinkPHP',
    'email' => 'thinkphp@qq.com'
]);

個人習慣用法:

$return_data['data_list'] = $data_list;
// 獲取分頁顯示
$return_data['page'] = $data_list->render();

return view("user/user_role_list",$return_data);

將需要賦值到模板中的變量統一放到 $return_data 里面

然后使用 view 助手函數統一返回,這樣也不用加載視圖類,又方便操作

 

第三步:模板渲染

默認模板位置:
 
在TestTemplate控制器中的template01操作里面,
不寫模板名稱,如下,默認模板位置是:
return View::fetch();
默認模板位置:app/view/test_template/template01.html
 
TestTemplate控制器指定模板文件:

return View::fetch('edit'); 

 則模板文件為: app/view/test_template/edit.html

指定目錄和模板文件

 return View::fetch('member/edit'); 

表示加載 member目錄下的edit.html 文件

跨應用指定目錄和模板文件

 return View::fetch('admin@member/edit');

第四步:變量輸出

輸出變量:
{$name}
 
輸出數組:
{$user.user_name}
{$user.age}
{$user['user_name']}
{$user['age']}
如果是多維數組,采用后面的方式
 
輸出對象:
{$user->user_name}
{$user->age}

系統變量輸出:
{$Request.server.script_name} // 輸出$_SERVER['SCRIPT_NAME']變量
{$Request.session.user_id} // 輸出$_SESSION['user_id']變量
{$Request.get.page} // 輸出$_GET['page']變量
{$Request.cookie.name}  // 輸出$_COOKIE['name']變量

系統變量通常以{$Request.打頭

 

// 調用Request對象的controller方法
{$Request.controller}
// 調用Request對象的action方法
{$Request.action}
// 調用Request對象的host方法
{$Request.host}
// 調用Request對象的ip方法
{$Request.ip}

 常量輸出:

//輸出PHP的版本
{$Think.PHP_VERSION}
//輸出THINKPHP的版本
{:think\\App::VERSION}

 

第五步:模板中使用函數

{$data.name|md5} 
編譯后結果是:
<?php echo htmlentities(md5($data['name'])); ?>
htmlentities是系統默認添加的,避免XSS的攻擊
你可以自己設定過濾方法,在配置文件中 template.php 中設置

 'default_filter' => 'htmlspecialchars'

原樣輸出:

{$data.name|raw} 

其他函數:

//轉化為時間格式
{$data.create_time|date='Y-m-d H:i'}
{$data.number|format='%02d'}
//多個參數
{$data.name|substr=0,3}
//多個函數
{$name|md5|upper|substr=0,3}
也可以這樣寫,更直觀也推薦這種寫法

{:substr(strtoupper(md5($name)),0,3)}

第六步:模板中使用運算符

{$user.score+10} //正確的
{$user['score']+10} //正確的
{$user['score']*$user['level']} //正確的
{$user['score']+myFun($user['level'])} //正確的
//三元
{$status? '正常' : '錯誤'}
原樣輸出: literal 標簽里面的內容不會被解析
{literal}
Hello,{$name}!
{/literal}
包含文件:
規則為:模塊@控制器/操作

{include file="public/header" /} // 包含頭部模版header
{include file="public/menu" /} // 包含菜單模版menu
{include file="blue/public/menu" /} // 包含blue主題下面的menu模版
{include file="public/header,public/menu" /} //包含多個文件

模板輸出替換:

在view.php 的配置文件中添加

'tpl_replace_string'  =>  [
    '__STATIC__'=>'/static',
    '__JS__' => '/static/javascript',
]

第七步:內置標簽

 循環標簽

{foreach $list as $key=>$vo } 
    {$vo.id}:{$vo.name}
{/foreach}
{volist name="list" id="vo"}
{$vo.id}:{$vo.name}<br/>
{/volist}
條件判斷:

{if ( $name == 1) OR ( $name > 100) } value1
{elseif $name == 2 /}value2
{else /} value3
{/if}

{if strtoupper($user['name']) == 'THINKPHP' }ThinkPHP
{else /} other Framework
{/if}
加載資源文件:
{load href="/static/js/common.js" /}
{load href="/static/css/style.css" /}
{load href="/static/js/common.js,/static/css/style.css" /}
原生標簽:
{php}echo 'Hello,world!';{/php}

<?php echo 'Hello,world!'; ?>

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM