thinkphp5——视图与模板

一 视图

视图功能由\think\View类配合视图驱动(模板引擎)类一起完成

1 视图实例化

(1) 控制器里调用视图类的方法

如果你的控制器继承了\think\Controller类的话,则无需自己实例化视图类

return $this->fetch();   // 渲染模板输出

下面的方法可以直接被调用

 

PS  如果需要在控制器里调用View类的其它方法,可以直接使用 $this->view  得到view对象

(2) 直接实例化视图类(很少使用)

$view = new think\view();

(3) 助手函数view()

return view('hello',['name'=>'thinkphp']);

2 内置模板引擎

配置文件

'template'               => [
     
    'type'         => 'Think',        // 模板引擎类型 支持 php think 支持扩展
    
    'view_path'    => './template/',  // 模板路径
     
    'view_suffix'  => 'html',         // 模板后缀
     
    'view_depr'    => DS,             // 模板文件名分隔符
     
    'tpl_begin'    => '{',            // 模板引擎普通标签开始标记
     
    'tpl_end'      => '}',            // 模板引擎普通标签结束标记
     
    'taglib_begin' => '{',            // 标签库标签开始标记
    
    'taglib_end'   => '}',            // 标签库标签结束标记
     
],

视图文件的根目录默认情况下位于模块的view目录,每个模块的视图目录可以通过模板参数view_path自定义

3 模板赋值

$this->assign('name','ThinkPHP'); // 模板变量赋值
 
 return $this->fetch('index', [
  
            'name'  => 'ThinkPHP',
             
]);
 
或者
 
return $this->display($content, [
 
            'name'  => 'ThinkPHP',
             
]);
 
//如果使用view助手函数渲染输出
 
return view('index', [
 
    'name'  => 'ThinkPHP',
   
   
//支持在任何地方使用静态方法进行模板变量赋值
   
think\View::share('name','value');

4 模板渲染

fetch('[模板文件]'[,'模板变量(数组)'])

用法描述
不带任何参数自动定位当前操作的模板文件
[模块@][控制器/][操作]常用写法,支持跨模块
完整的模板文件名直接使用完整的模板文件名(包括模板后缀)

自定义模板文件的位置

return $this->fetch('./template/public/menu.html');
 
这种方式需要带模板路径和后缀指定一个完整的模板文件位置,要注意模板文件位置是相对于应用的入口文件,而不是模板目录。

渲染内容 直接解析内容而不通过模板文件的话

return $this->display($content,$vars);

5 模板输出替换
内置输出替换变量

__ROOT__ __STATIC__ __JS__和__CSS__,__URL__

局部替换 支持对视图输出的内容进行字符替换

public function index()
 
    {
     
        $this->assign('name','thinkphp');
         
        return $this->fetch('index',[],['__PUBLIC__'=>'/public/']);
         
    }

全局替换的话,可以直接在配置文件中添加

'view_replace_str'  =>  [
 
    '__PUBLIC__'=>'/public/',
     
    '__ROOT__' => '/',
     
]

助手函数view也支持全局配置参数view_replace_str的设置

return view('index',['name'=>'thinkphp'],['__PUBLIC__'=>'/public/']);


二 模板

模板文件定义

视图目录/控制器名(小写)/操作名(小写)+模板后缀

模板渲染规则

模板渲染使用\think\View类的fetch方法渲染规则为

return $view->fetch();              [模板文件目录]/当前控制器名(小写+下划线)/当前操作名(小写).html
 
return $view->fetch('add');         [模板文件目录]/当前控制器名(小写+下划线)/add.html
 
return $view->fetch('user/add');    [模板文件目录]/user/add.html
 
return $view->fetch('admin@user/add');   跨模块调用模板

3 变量输出

$view = new View();
 
$view->name = 'thinkphp';
 
return $view->fetch();

然后就可以在模板中使用

然后就可以在模板中使用

如果是数组变量

$data['name'] = 'ThinkPHP';
 
$data['email'] = 'thinkphp@qq.com';
 
$view->assign('data',$data);

在模板中我们可以用下面的方式输出

Name:{$data.name}
 
或者
 
Email:{$data['email']}

如果是一个对象

如果是一个对象

4 系统变量输出

支持输出 $_SERVER$_ENV$_POST$_GET$_REQUEST$_SESSION$_COOKIE变量

{$Think.server.script_name} // 输出$_SERVER['SCRIPT_NAME']变量
 
{$Think.session.user_id} // 输出$_SESSION['user_id']变量
 
{$Think.get.pageNumber} // 输出$_GET['pageNumber']变量
 
{$Think.cookie.name}  // 输出$_COOKIE['name']变量

常量输出

{$Think.const.APP_PATH}
 
{$Think.APP_PATH}

配置输出

{$Think.config.default_module}

语言变量

{$Think.lang.page_error}

5 请求参数

{$Request.get.id}          // 调用Request对象的get方法 
 
{$Request.param.name}              // 调用Request对象的param方法
 
{$Request.param.user.nickname}     // 调用Request对象的param方法
 
{$Request.root}                    // 调用Request对象的root方法
 
{$Request.root.true}               // 调用Request对象的root方法,并且传入参数true
 
{$Request.path}                    // 调用Request对象的path方法
 
{$Request.module}                  // 调用Request对象的module方法
 
{$Request.controller}              // 调用Request对象的controller方法
 
{$Request.action}                  // 调用Request对象的action方法
 
{$Request.ext}                     // 调用Request对象的ext方法
 
{$Request.host}                    // 调用Request对象的host方法
 
{$Request.ip}                      // 调用Request对象的ip方法
 
{$Request.header.accept-encoding}  // 调用Request对象的header方法

6 使用函数

{$data.name|md5} 
 
{$create_time|date="y-m-d",###}
 
{$data.name|substr=0,3}
 
{$name|md5|strtoupper|substr=0,3}

7 使用默认值

{$user.nickname|default="这家伙很懒,什么也没留下"}
 
{$Think.get.name|getName|default="名称为空"} 默认值和函数可以同时使用

8 使用运算符

我们可以对模板输出使用运算符,包括对“+”“-” “*” “/”和“%”的支持

9 三元运算符

{$status? '正常' : '错误'}

10 原样输出

可以使用literal标签来防止模板标签被解析

{literal}Hello,{$name}!{/literal} //{$name}标签被literal标签包含,因此并不会被模板引擎解析,而是保持原样输出。

11 模板注释

{/* 注释内容 */ } 或 {// 注释内容 }  单行注释
 
{/* 这是模板                        模板注释在生成编译缓存文件后会自动删除,这一点和Html的注释不同。
注释内容*/ }                        多行注释

12  包含文件

模版表达式的定义规则为:模块@控制器/操作

{include file="public/header" /}                // 包含头部模版
 
{include file="public/menu" /}                  // 包含菜单模版header
 
{include file="blue/public/menu" /}             // 包含blue主题下面的menu模版
 
{include file="public/header,public/menu" /}     // 可以一次包含多个模版
 
{include file="../application/view/default/public/header.html" /}          直接包含一个模版文件名
 
{include file="Public/header" title="$title" keywords="开源WEB开发框架" /} 在包含的header.html文件里面使用title和keywords变量

13 内置标签

volist标签

{volist name="list" id="vo"}
 
{$vo.name}
 
{/volist}

foreach标签

{foreach $list as $vo} 
 
    {$vo.name}
     
{/foreach}

for标签

{for start="开始值" end="结束值" comparison="" step="步进值" name="循环变量名" }{/for}

比较标签

 

{eq name="name" value="value"}value{/eq}
 
{eq name="name" value="value"}相等{else/}不相等{/eq}

switch标签

{switch name="变量" }
 
    {case value="值1" break="0或1"}输出内容1{/case}
     
    {case value="值2"}输出内容2{/case}
     
    {default /}默认情况
 
{/switch}

if标签

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

in和notin

{in name="id" value="1,2,3"}id在范围内{/in}

between 和notbetween

{between name="id" value="1,10"}输出内容1{/between}

资源文件加载

{load href="/static/js/common.js" /}

{load href="/static/js/common.js,/static/css/style.css" /}

{js href="/static/js/common.js" /}

{css href="/static/css/style.css" /}

使用php标签

{php}echo 'Hello,world!';{/php}

assign标签

{assign name="var" value="123" /}

define标签

{define name="MY_DEFINE_NAME" value="3" /} 用于在模板中定义常量

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我会尽力回答你的问题。接入腾讯云短信API需要以下几个步骤: 1. 注册腾讯云账号,并开通短信服务。 2. 创建应用,获取 AppID 和 AppKey。 3. 安装腾讯云 SDK。 4. 在 ThinkPHP5 中集成腾讯云 SDK。 5. 编写发送短信的代码。 以下是详细步骤: 1. 注册腾讯云账号,并开通短信服务。 首先,你需要注册一个腾讯云账号,然后在控制台中开通短信服务。在开通短信服务时,你需要填写企业信息并进行实名认证。 2. 创建应用,获取 AppID 和 AppKey。 在腾讯云控制台中创建应用,并获取 AppID 和 AppKey。这些信息将在后面的代码中使用。 3. 安装腾讯云 SDK。 在你的项目中安装腾讯云 SDK。可以通过 Composer 安装,也可以手动下载安装。 4. 在 ThinkPHP5 中集成腾讯云 SDK。 在 ThinkPHP5 中集成腾讯云 SDK,可以在 config.php 配置文件中添加以下配置: ```php // config.php return [ 'qcloud' => [ 'sms' => [ 'app_id' => 'your-app-id', 'app_key' => 'your-app-key', 'template_id' => 'your-template-id', 'sms_sign' => 'your-sms-sign', ], ], ]; ``` 上面的配置中,app_id 和 app_key 是在第二步中获取的,template_id 是短信模板的 ID,sms_sign 是短信签名。 5. 编写发送短信的代码。 在 ThinkPHP5 中发送短信可以通过继承 Qcloud\Sms\SmsSingleSender 类来实现。以下是发送短信的示例代码: ```php use Qcloud\Sms\SmsSingleSender; $appId = config('qcloud.sms.app_id'); $appKey = config('qcloud.sms.app_key'); $templateId = config('qcloud.sms.template_id'); $smsSign = config('qcloud.sms.sms_sign'); $sender = new SmsSingleSender($appId, $appKey); $result = $sender->sendWithParam('86', $mobile, $templateId, $params, $smsSign); if ($result === false) { return '发送短信失败'; } $response = json_decode($result, true); if ($response['result'] !== 0) { return '发送短信失败:' . $response['errmsg']; } return '发送短信成功'; ``` 上面的代码中,$mobile 是接收短信的手机号码,$params 是短信模板中的参数,$result 是发送短信的结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值