随心的博客

好记性不如个烂笔头,随心记录!

返回顶部

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!'; ?>

 

 

 

 

posted @ 2021-11-04 15:44  yangphp  阅读(6030)  评论(0编辑  收藏  举报