tp5 html页面使用if else,tp5.0和tp3.2中前台模板IF标签和FOREACH的区别

本文对比了ThinkPHP 3.2与5.0版本中模板语法的变化,包括IF和FOREACH标签的不同写法,以及URL和路由等特性上的差异。还介绍了ThinkPHP 5.0的一些新特性,例如控制器输出方式、输入数据获取方法及内置分页功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

IF标签

tp3.2

value1

value2

value3

tp5.0

{if condition="($name == 1) OR ($name > 100) "}

value1

{elseif condition="$name eq 2"/}

value2

{else /}

value3

{/if}

FOREACH标签

tp3.2

{$key}|{$vo.id}:{$vo.name}

tp5.0

{foreach $list as $vo}

{$vo.id}:{$vo.name}

{/foreach}

注:最大的区别就是tp3.2用的是 < > 尖括号 ,tp5.0用的是 { } 花括号

tp3&period;2中前台模板中日期时间的转换

{$vo.create_time|date='Y-m-d',###} 其中###是占位符

tp5&period;0和tp3&period;2的区别

1. 控制器输出return $this->fetch(); ----5$this->display(); ----3.2 单字母函数去掉了 如:M() D() U() S() C() 3 ...

yii中渲染模板时render与renderPartial的区别

render方法在渲染模板时会将渲染布局文件,而renderPartial则不会渲染布局

Thinkphp回顾&lpar;五&rpar;之前台模板中的基本语法

一.导入CSS和JS文件 的三种方式  (了解) 1.link方式(常规)

phpcms-v9 前台模板文件中&lbrace;pc&rcub;标签的执行流程

前台pc标签的使用:{pc:content 参数名="参数值" 参数名="参数值" 参数名="参数值"} 如: {pc:content ac ...

【TP3&period;2与TP5&period;0区别】

Tp3.2 和 Tp5.0之间的区别   5.0版本和之前版本的差异较大,本篇对熟悉3.2版本的用户给出了一些5.0的主要区别. URL和路由 5.0的URL访问不再支持普通URL模式,路由也不支持正 ...

TP5&period;0中的小知识总结

2017年6月26日15:01:231.input    获取输入数据 支持默认值和过滤:接收用户在前台输入的数据,可以是get方式也可以是post方式.2.ThinkPHP5.0内置了分页实现,要给 ...

ThinkPHP5&period;0框架开发--第9章 TP5&period;0视图和模板

ThinkPHP5.0框架开发--第9章 TP5.0视图和模板 第9章 TP5.0视图和模板 ===================================================== ...

thinkphp5&period;0学习(九):TP5&period;0视图和模板

以下是基于TP5框架的微信APP支付功能示例: 1. 首先,在TP5框架的config目录下新建wxpay.php文件,用于存放微信支付相关的配置信息。 ```php <?php return [ // 应用ID &#39;app_id&#39; => &#39;&#39;, // 商户号 &#39;mch_id&#39; => &#39;&#39;, // API密钥 &#39;api_key&#39; => &#39;&#39;, // 异步通知地址 &#39;notify_url&#39; => &#39;&#39;, // 交易类型 &#39;trade_type&#39; => &#39;APP&#39;, // 签名类型 &#39;sign_type&#39; => &#39;MD5&#39;, ]; ``` 2.TP5框架的extend目录下新建WxPay文件夹,并在该文件夹下新建WxPayApi.php文件,用于封装微信支付相关的接口。 ```php <?php namespace WxPay; use think\facade\Log; /** * 微信支付API */ class WxPayApi { /** * 统一下单接口 * * @param array $data * @return array */ public static function unifiedOrder($data) { $url = &#39;https://api.mch.weixin.qq.com/pay/unifiedorder&#39;; $data[&#39;appid&#39;] = config(&#39;wxpay.app_id&#39;); $data[&#39;mch_id&#39;] = config(&#39;wxpay.mch_id&#39;); $data[&#39;nonce_str&#39;] = self::getNonceStr(); $data[&#39;sign_type&#39;] = config(&#39;wxpay.sign_type&#39;); $data[&#39;sign&#39;] = self::makeSign($data); $xml = self::toXml($data); $response = self::postXmlCurl($xml, $url, true, 6); $result = self::fromXml($response); if ($result[&#39;return_code&#39;] == &#39;FAIL&#39;) { Log::error(&#39;统一下单失败:&#39; . $result[&#39;return_msg&#39;]); return [&#39;errcode&#39; => 1, &#39;errmsg&#39; => $result[&#39;return_msg&#39;]]; } if ($result[&#39;result_code&#39;] == &#39;FAIL&#39;) { Log::error(&#39;统一下单失败:&#39; . $result[&#39;err_code_des&#39;]); return [&#39;errcode&#39; => 1, &#39;errmsg&#39; => $result[&#39;err_code_des&#39;]]; } $data = [ &#39;appid&#39; => config(&#39;wxpay.app_id&#39;), &#39;partnerid&#39; => config(&#39;wxpay.mch_id&#39;), &#39;prepayid&#39; => $result[&#39;prepay_id&#39;], &#39;package&#39; => &#39;Sign=WXPay&#39;, &#39;noncestr&#39; => self::getNonceStr(), &#39;timestamp&#39; => time(), ]; $data[&#39;sign_type&#39;] = config(&#39;wxpay.sign_type&#39;); $data[&#39;sign&#39;] = self::makeSign($data); return $data; } /** * 生成签名 * * @param array $data * @return string */ public static function makeSign($data) { ksort($data); $string = self::toUrlParams($data); $string = $string . &#39;&key=&#39; . config(&#39;wxpay.api_key&#39;); if (config(&#39;wxpay.sign_type&#39;) == &#39;MD5&#39;) { $string = md5($string); } elseif (config(&#39;wxpay.sign_type&#39;) == &#39;HMAC-SHA256&#39;) { $string = hash_hmac(&#39;sha256&#39;, $string, config(&#39;wxpay.api_key&#39;)); } return strtoupper($string); } /** * 将数组转换为XML格式 * * @param array $data * @return string */ public static function toXml($data) { $xml = &#39;<xml>&#39;; foreach ($data as $key => $val) { if (is_numeric($val)) { $xml .= &#39;<&#39; . $key . &#39;>&#39; . $val . &#39;</&#39; . $key . &#39;>&#39;; } else { $xml .= &#39;<&#39; . $key . &#39;><![CDATA[&#39; . $val . &#39;]]></&#39; . $key . &#39;>&#39;; } } $xml .= &#39;</xml>&#39;; return $xml; } /** * 将XML转换为数组 * * @param string $xml * @return array */ public static function fromXml($xml) { libxml_disable_entity_loader(true); $result = json_decode(json_encode(simplexml_load_string($xml, &#39;SimpleXMLElement&#39;, LIBXML_NOCDATA)), true); return $result; } /** * 生成随机字符串 * * @param int $length * @return string */ public static function getNonceStr($length = 32) { $chars = &#39;abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789&#39;; $nonceStr = &#39;&#39;; for ($i = 0; $i < $length; $i++) { $nonceStr .= substr($chars, mt_rand(0, strlen($chars) - 1), 1); } return $nonceStr; } /** * 将数组转换为URL参数 * * @param array $data * @return string */ public static function toUrlParams($data) { $buff = &#39;&#39;; foreach ($data as $k => $v) { if ($k != &#39;sign&#39; && $v != &#39;&#39; && !is_array($v)) { $buff .= $k . &#39;=&#39; . $v . &#39;&&#39;; } } $buff = trim($buff, &#39;&&#39;); return $buff; } /** * 发送POST请求 * * @param string $xml * @param string $url * @param bool $useCert * @param int $timeout * @return bool|string */ public static function postXmlCurl($xml, $url, $useCert = false, $timeout = 30) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_USERAGENT, &#39;Mozilla/5.0 (Windows NT 6.1; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0&#39;); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $xml); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); if ($useCert) { curl_setopt($ch, CURLOPT_SSLCERTTYPE, &#39;PEM&#39;); curl_setopt($ch, CURLOPT_SSLCERT, &#39;/path/to/your/cert.pem&#39;); curl_setopt($ch, CURLOPT_SSLKEYTYPE, &#39;PEM&#39;); curl_setopt($ch, CURLOPT_SSLKEY, &#39;/path/to/your/key.pem&#39;); } curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); $result = curl_exec($ch); curl_close($ch); return $result; } } ``` 3. 在控制器中调用WxPayApi类的unifiedOrder方法,实现微信支付功能。 ```php <?php namespace app\index\controller; use think\Controller; use WxPay\WxPayApi; class Index extends Controller { public function index() { $data = [ &#39;body&#39; => &#39;测试商品&#39;, &#39;out_trade_no&#39; => date(&#39;YmdHis&#39;) . mt_rand(10000, 99999), &#39;total_fee&#39; => 1, &#39;spbill_create_ip&#39; => $_SERVER[&#39;REMOTE_ADDR&#39;], ]; $result = WxPayApi::unifiedOrder($data); if ($result[&#39;errcode&#39;]) { return $result[&#39;errmsg&#39;]; } return json($result); } } ``` 以上是基于TP5框架的微信APP支付功能示例,具体实现可以根据自己的需要进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值