smarty自定义函数

PHP之Smarty使用以及框架display和assign原理 进入Smarty官网下载,复制目录libs目录即可,二、使用Smarty,创建目录demo,把libs放进去改名为Smarty,三、引入Smarty配置,创建目录,index.php文件配置 阅读详情
 

 

smarty函数

   实现对smarty的功能扩展

   Smarty.class.php文件中成员方法

   内建函数:smarty自带 ,不能修改

   自定义函数:可以自行修改

              保存在plugins目录下

              语法格式类似于html标记的写法

              <{……}>

一、       了解smarty自定义函数

  例如:

1)     smarty自定义函数assign

作用:用于在模板被执行时为模板变量赋值.

函数名称:assign

参数:var:   声明变量名称  字符串

      Value: 给该变量赋值  字符串

 

例如:a.html:

<{assign  var=”title”  value=”this is title”}>

<{$title}>

 显示结果:this is title

 

练习:

  使用自定义函数分配变量 content,对应值为abc;

   <{assign  var=”content”  value=”abc”}>

  <{$content}>

  显示结果:abc

 

类似于:<input  type=”text”  name=”input1”>

 属性无顺序要求

2)     smarty方法assign

 

二、       实现自定义函数

1)例如:

a.html: 

<{title  num=”10”  content=”aaaa”  size=”10”  color=”red”  }>

 

b.php

第一步:自定义函数

function  fun1(){}

第二步:注册自定义函数

$tpl->register_function(“模板文件中的函数名”,”php中的函数名”)         

       例如:

a.     html:

<{title  num=”10”  size=”7”  content=”11111”}>

 

b.    php:

$tpl->register_function(“title”,”fun1”);

            function  fun1($args){

                $a=””;

     for($i=0;$i<$args[“num”];$i++){

     $a.=“<font size=”.$args[‘size’].”>”.$args[content].”</font><br>”;

}

     return $a;

}

 

2)注册块

   $tpl->register_block(“模板文件中的块名”,”php中的函数名”)

<hr />

<br />

<a> </a>块

a.html

          <{h   num=10  size=”7”}>

             aaaaa

          <{/h}>

          

     例如:

        a.html:

         <{hello  num=”10”  size=”10”}>

         aaaaa

<{/hello}>

 

        b.php:

          $tpl->register_block(“hello”,”fun2”);

          function fun2($args,$content){

            $a=””;

            for($i=1;$i<$args[“num”];$i++){

               $a.=”<font  size=”.$args[“size”].”>”.$content.”</font><br>”;

}

              return $a;

}

 

 

2)          在plugins目录下新建文件

新建函数文件 world

  例如:

function.assign_debug_info.php

function  smarty_function_***(){}

  步骤

第一步:plugins下新建文件function.world.php

第二步:打开文件

    Function smarty_function_world($args,&$smarty){..}

 

例如:

a.     html:

<{world  num=”10”  size=”7”  content=”aaa”}>

function.world.php:

           <?php

 

function smarty_function_world($args, &$smarty){

  

                   $a="";

  

                   for($i=0;$i<$args["num"];$i++){

     

                   $a.= "<font size=".$args["size"].">".$args["content"]."</font><br>";

     

               }

  

                return $a;

  

}

?>

 

 

 

           新建块文件hello

block.hello.php

function  smarty_block_hello(){}

第一步:plugins下新建块文件block.hello.php

第二步:打开文件

    Function smarty_block_hello($args,$content,&$smarty){..}

                    

例如:

a.html:

<{hello  num=”10”  size=”6”}>

  aaaa

<{/hello}>

block.hello.php:

           <?php

 

function smarty_function_world($args,$content){

  

                $a="";

  

               for($i=0;$i<$args["num"];$i++){

     

                 $a.= "<font size=".$args["size"].">".$content."</font><br>";

     

                }

  

              return $a;

  

}

?>

 

 

     

自定义函数的功能和语法

① assign: 用于在模板被执行时为模板变量赋值.

  <{assign  var=” string被赋值的变量名”  value=” string赋给变量的值”}>

<{assign  var=” name”  value=”ABC”}>

The  value  is  <{$name}>

结果:The value is ABC

 

② counter: 用于输出一个记数过程.

 <{counter name=” 计数器的名称” start=”记数器初始值” skip=”记数器间隔、步长” direction=”记数器方向,(增/减)” print=”是否输出值” assign=”输出值将被赋给模板变量的名称”}>

 

<{counter start=0 skip=2 print=true}>

<{counter}><br>

<{counter}><br>

<{counter}><br>

<{counter}><br>

结果:0 2 4 6 8

 如果print=false结果:2 4 6 8

 

③Cycle:用于轮转使用一组值

 <{cycle name=轮转的名称 values=待轮转的值,可以是用逗号分隔的列表(请查看 delimiter 属性)或一个包含多值的数组. print=是否输出值 advance=是否使用下一个值(为 false 时使用当前值) delimiter=指出values 属性中使用的分隔符,默认是逗号. assign=输出值将被赋给模板变量的名称}>

 

<{section name=rows loop=$data}>

<tr bgcolor="{cycle values="#eeeeee,#d0d0d0" print=true}">

             <td><{$data[rows]}></td>

</tr>

<{/section}>

结果:不显示

 

④

debug: {debug} 将调式信息输出到页面上. 该函数是否可用取决于 Smarty 的 debug 设置. 该函数在运行时取得数据,因此不能显示使用中的模板,只能显示运行时被赋值的变量. 不过还是可以看到所有模板内当前可用的变量.

<{debug output=html}>

结果:

 

 

⑤eval 按处理模板的方式计算取得变量的值;

{eval var=待求值的变量(或字符串)}
{eval var=输出值将被赋给模板变量的名称}

 

setup.conf:

emphstart = <b>

emphend = </b>

title = Welcome to <{$company}>'s home page!

ErrorCity = You must supply a <{#emphstart#}>city<{#emphend#}>.

ErrorState = You must supply a <{#emphstart#}>state<{#emphend#}>.

 

a.    html:

            <{config_load file="setup.conf"}>

 

<{eval var=$foo}>

<{eval var=#title#}>

<{eval var=#ErrorCity#}>

<{eval var=#ErrorState# assign="state_error"}>

<{$state_error}>

       结果:

         Welcome to 's home page! You must supply a city. You must supply astate.

 

       ⑥fetch 用于从本地文件系统、HTTP或FTP上取得文件并显示文件的内容.

         <{fetch file="待请求的文件,http或ftp方式." assign="输出值将被赋给模板变量的名称"}>

 

          <{fetch file="http://www.myweather.com/68502/" assign="weather"}>

<{if $weather ne ""}>

             <b><{$weather}></b>

<{/if}>

        结果:

        

 

      ⑦html_checkboxes 根据给定的数据创建复选按钮组.

      {html_checkboxes name=复选按钮组的名称 values=包含复选按钮组值的数组 checked=$customer_id output=包含复选按钮组显示值的数组 selected=已选定的元素或元素数组 options=包含值和显示的关联数组 separator=分隔每个复选按钮的字符串 labels=是否为每个复选按钮添加 <label> 标签 }
 

  

     ⑧html_image 产生一个图象的 HTML 标签. 如果没有提供高度和宽度值,将根据图象的实际大小自动取得.

       {html_image file=图象文件的名称或路径 border=图象边框大小 height=显示图象高度 width=显示图象宽度
basedir=图象文件位置的相对路径 alt=可选图象描述(鼠标指向图象或图象文件不存在时显示的字符串信息) href=图象链接到的地址}

 

       a.html:

<{html_image file="pumpkin.jpg"}>

<{html_image file="/path/from/docroot/pumpkin.jpg"}>

<{html_image file="../path/relative/to/currdir/pumpkin.jpg"}>

      结果:

        <img src="pumpkin.jpg" alt="" border="0" width="44" height="68" />

<img src="/path/from/docroot/pumpkin.jpg" alt="" border="0" width="44" height="68" />

<img src="../path/relative/to/currdir/pumpkin.jpg" alt="" border="0" width="44" height="68" />

 

     ⑨html_options 根据给定的数据创建选项组.

       {html_options values=包含下拉列表各元素值的数组 output=包含下拉列表各元素显示值的数组name=下拉菜单的名称  options=$cust_options selected=$customer_id}
 
     ⑩自定义函数 html_radios 根据给定的数据创建单选按钮组
       {html_radios name="单选按钮列表的名称" values=包含单选按钮值的数组 output=包含单选按钮显示值的数组 options=包含值和显示的关联数组 checked=已选定的元素 separator=分隔每个单选按钮的字符串}
 

     11)自定义函数 html_select_date 用于创建日期下拉菜单. 它可以显示任意年月日.

      {html_select_date prefix=变量名称前缀 time=使用时间类型(data/time) start_year=下拉列表中第一个年份,或与当前年份的相对值(正/负 几年) end_year=下拉列表中最后一个年份,或与当前年份的相对值(正/负 几年) display_days=是否显示天 display_months=是否显示月 display_years=是否显示年 month_format=月份的表示方法(strftime) day_value_format=天的表示方法(sprintf) year_as_text=是否以文本方式显示年份 reverse_years=逆序显示年份 field_array=如果指定了名称,选定的区域将以[Day],[Year],[Month]的形式返回给PHP(待考)  day_size=如果给定,为标签添加大小属性 month_size=如果给定,为标签添加大小属性  year_size=如果给定,为标签添加大小属性  all_extra=如果给定,为所有标签添加附加属性  day_extra=如果给定,为标签添加附加属性  month_extra=如果给定,为标签添加附加属性  year_extra=如果给定,为标签添加附加属性  field_order=显示区域的顺序  field_separator=各区域间输出的分隔字符串  month_value_format=月份值的strftime表示方法,默认为 %m }
 
<{html_select_date prefix="StartDate" time=$time start_year="-5" end_year="+1" display_days=false}>
 

 结果:

  

 

12)自定义函数 html_select_time 用于创建时间下拉菜单. 它可以显示任意时分秒.

{html_select_time  prefix=变量名称前缀  time=使用时间类型(data/time)  display_hours=是否显示小时  display_minutes=是否显示分钟  display_seconds=是否显示秒  display_meridian=是否显示正午界(上午/下午)  use_24_hours=是否使用24小时制  minute_interval=分钟下拉列表的间隔  second_interval=秒钟下拉列表的间隔  field_array=输出值到该值指定的数组  all_extra=如果给定,为标签添加附加属性  hour_extra=如果给定,为标签添加附加属性  minute_extra=如果给定,为标签添加附加属性  second_extra=如果给定,为标签添加附加属性  meridian_extra=如果给定,为标签添加附加属性}
 
<{html_select_time use_24_hours=true}>
 

结果:

 

13)自定义函数 html_table 将数组中的数据填充到 HTML 表格中.

{html_table loop=待遍历的数组 cols=表格的列数目 table_attr=表格的属性  tr_attr=行标签属性(或轮转数组)  td_attr=列标签属性(或轮转数组)  trailpad=最后一行附加的数据(如果有的话)  hdir=行的对齐方式,可能的值为 left 或 right   vdir=列的对齐方式,可能的值为 up 或 down }

 

例如:

 

    index.php:
 
require('Smarty.class.php');
$smarty = new Smarty;
$smarty->assign('data',array(1,2,3,4,5,6,7,8,9));
$smarty->assign('tr',array('bgcolor="#eeeeee"','bgcolor="#dddddd"'));
$smarty->display('index.tpl');
 
index.tpl:
 
{html_table loop=$data}
{html_table loop=$data cols=4 table_attr='border="0"'}
{html_table loop=$data cols=4 tr_attr=$tr}
 
结果:
 
<table border="1">
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>4</td><td>5</td><td>6</td></tr>
<tr><td>7</td><td>8</td><td>9</td></tr>
</table>
<table border="0">
<tr><td>1</td><td>2</td><td>3</td><td>4</td></tr>
<tr><td>5</td><td>6</td><td>7</td><td>8</td></tr>
<tr><td>9</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
</table>
<table border="1">
<tr bgcolor="#eeeeee"><td>1</td><td>2</td><td>3</td><td>4</td></tr>
<tr bgcolor="#dddddd"><td>5</td><td>6</td><td>7</td><td>8</td></tr>
<tr bgcolor="#eeeeee"><td>9</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
</table>

 

14)math 允许模板设计者在模板中进行数学表达式运算.

   {math equation=待执行的表达式  format=结果的格式(遵从sprintf函数)  var=表达式变量值 assign=输出值将被赋给模板变量的名称}
 $height=4, $width=5
 
<{math equation="x + y" x=$height y=$width}>
 

结果:9

 

15) mailto 自动生成电子邮件链接,并根据选项决定是否对地址信息编码.

{mailto address=电子邮件地址 text=邮件链接上显示的文本,默认为电子邮件地址  encode=编码方式,可选值为 none,hex或javascript  cc=邮件抄送地址,多条地址信息以逗号分隔  bcc=邮件暗送地址,多条地址信息以逗号分隔  subject=邮件主题  newsgroups=发送到新闻组的地址,多条地址信息以逗号分隔  followupto=追踪地址信息,多条信息以逗号分隔  extra=其它需要传递给链接的信息,如css样式}

 

{mailto address="me@domain.com"}
自动生成:
<a href="mailto:me@domain.com" >me@domain.com</a>

显示连接

 

 

 

 

 

 

 

 

 

 

smarty自定义函数用法示例 主要介绍了smarty自定义函数用法,结合实例形式详细分析了Smarty自定义函数的定义与使用技巧,需要的朋友可以参考下 立即下载

相关推荐

io_uring vs epoll ,谁在网络编程领域更胜一筹?

简介:从定量分析的角度,通过量化 io_uring 和 epoll 两种编程框架下的相关操作的耗时,来分析二者的性能差异。 本文作者:王小光,「高性能存储技术SIG」核心成员。 背景 io_uring 在传统存储 io 场景已经证明其价值,但 io_uring 不仅支持传统存储 io,也支持网络 io。io_uring 社区有众多的开发者尝试将 io_uring 用于网络应用。我们之前也在《你认为 io_uring 只适用于存储 IO?大错特错!》中也探索过 io_uring 在网络场景的应用及其

阿里云云栖号 3035

smarty的ASSIGN()函数

http://blog.sina.com.cn/s/blog_6721f25c01011qdj.html 主要是把程序里面的值付给模板,因为使用smarty时,模板里面是没有PHP代码的,无法显示在操作过程序产生的变量的值,所以就通过个函数把PHP里面的值给smarty,这样就能在模板里显示了例如:如果我想在页面上显示一个变量的值,如$abc = "这是一个变量的值";然后我在程序里用...

diemi9921的博客 299

别再乱调NvM_WriteBlock了!手把手教你搞懂Autosar NVM状态机与读写时序

本文深入解析Autosar NVM状态机与读写时序,帮助开发者避免常见错误。通过详细的状态机解读、最佳实践代码示例和异常处理策略,提升嵌入式系统中数据存储的可靠性。特别针对NvM_WriteBlock的调用逻辑和状态机机制进行实战讲解,解决工程师在实际开发中遇到的异步写入问题。

weixin_33701617的博客 344

Smarty的assign定义变量

<br />使用assign定义的变量被添加到Smarty类的$tpl_vars数组成员下。<br />当assign指定关键字/值的时候,如:$Smarty->assign(key,value),则装入$tpl_var数组的键名为key,值为value。<br />$Smarty->assign('myname','飞虎');<br /><br />当assign的是一个数组时,如:$Smarty->assign(array()),则装入$tpl_var数组的键名键值与原数组相同。<br />$Smart

jishume的专栏 1550

InSAR数据获取实战指南:Sentinel-1、精密轨道与ALOS PALSAR DEM的下载与应用

本文详细介绍了InSAR数据获取的实战指南,重点解析Sentinel-1数据、精密轨道数据(OPOD)和ALOS PALSAR DEM的下载与应用技巧。通过实际案例和代码示例,帮助读者掌握数据筛选、下载加速、校验及多源数据协同使用的关键方法,提升地面形变监测的精度与效率。

weixin_29215815的博客 431

【项目实战-MATLAB】:基于机器学习的虹膜识别系统设计

虹膜识别主要包括虹膜定位、虹膜裁剪、极坐标变换、归一化、HOG特征提取、虹膜识别六个主要步骤。本系统采用MATLAB作为开发工具实现 主要算法:霍夫变换预处理 HOG特征提取 SVM进行识别

qq_45047246的博客 6537

在smarty模板中调用PHP自定义函数(从smarty2到smarty3)

 这两天研究了一下smarty,熟悉了它的一些基本语法后便开始用它开发一个留言版(真正的开发中一般不会有程序员使用smarty去开发一个留言版的,杀鸡焉用牛刀?),主要是为了将所学的知识点串联起来。在开发的过程中,遇到了一个问题,如题,我在PHP文件中定义了一个函数,现在想在.tpl模版中调用,该如何调用呢?通过在网上查找一些资料,下面给出具体的解决方案:大家都知道,在smarty中提供了

huli870715的专栏 1万+

Ubuntu20.04 高效安装企业微信的完整指南

本文提供了在Ubuntu20.04系统上高效安装企业微信的完整指南,详细介绍了通过Deepin-wine环境运行Windows版企业微信的步骤和优化技巧。内容包括系统环境检查、依赖安装、企业微信包的获取与安装、首次运行配置及常见问题解决方案,帮助开发者在Ubuntu系统中流畅使用企业微信进行办公通讯。

weixin_42568801的博客 351

在Smarty模板中如何用自定义函数

首先,你需要创建一个自定义的插件函数。这个函数应该位于Smarty的插件目录中,或者你可以通过方法指定一个自定义的插件目录。// 文件路径: plugins/modifier.add_numbers.phpphp?一旦你创建了插件函数并正确设置了插件目录,你就可以在Smarty模板中调用这个函数了。在这个例子中,是一个修饰器(modifier),它接受两个参数并返回它们的和。$num1和$num2是在模板中定义的变量。

sheji888的专栏 724

混合开关电容DCDC变换器技术解析与工程应用指南

在电源设计领域,传统DCDC变换器在高降压比或高升压比场景下,往往面临占空比过窄、开关应力大、效率偏低等瓶颈。开关电容变换器虽能实现固定比例的电压变换,却受限于调节能力。混合开关电容DCDC变换器通过“开关电容网络粗调变比+电感式DCDC细调输出”的策略,兼顾高效率、高功率密度与宽调压范围。本文梳理了其典型拓扑(如2:1/4:1 SC+Buck)、关键对比、控制策略(含软充电)及工程应用中的常见问题,帮助电源工程师在服务器供电、快充、车载电源等场景下快速选型与调试。

weixin_29164185的博客 312

3、硬件工程师笔试面试学习汇总——器件篇目录(2025版本)

硬件工程师笔试面试学习

XU157303764的博客 7621

在smarty模板中调用PHP自定义函数(从smarty2到smarty3)【转】

http://blog.youkuaiyun.com/huli870715/article/details/6526268这两天研究了一下smarty,熟悉了它的一些基本语法后便开始用它开发一个留言版(真正的开发中一般不会有程序员使用smarty去开发一个留言版的,杀鸡焉用牛刀?),主要是为了将所学的知识点串联起来。在开发的过程中,遇到了一个问题,如题,我在PHP文件中定义了一个函数,现在想在.tpl模版中调

后端开发 828

深度剖析:Spring AI 与 LangChain4j,谁才是 Java 程序员的 AI 开发利器?

首先介绍 AI 时代 Java 开发框架选择背景,接着对比两者功能特性(Spring AI 的生态集成与标准化设计、LangChain4j 的多模型适配与提示工程)、应用场景(企业级系统改造与创新产品开发)、开发体验(学习成本与调试工具)、生态扩展(Spring 商业支持与 LangChain4j 开源社区)、性能安全(企业级优化与自主安全实现)及成本趋势(短期投入、长期回报与技术演进),最后给出选型建议与混合架构方案。

博客 5445

【smarty】smarty中自定义函数和自定义块

一、直接在控制器里面自定义一个普通函数 <?php include_once("libs/Smarty.class.php"); // 包含smarty类文件 $smarty=new Smarty(); // 建立smarty实例对象$smarty /* $smarty->caching=false; // 是否使用缓存 $smarty->template_

PHP在线开发笔记 4747

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

smarty模板的自定义函数

smarty模板的自定义函数(这里介绍的是常用) 分为三个种类: 1、 变量调节器 2、 函数 3、 块函数 三个种类插件的用法: 1、 变量调解器的用法, <{$var|myfun:arg1:arg2}> 2、 函数的用法(和使用HTML标记很像) 如, <{myfun color=”red” size=”7” num=”7”}> 在PHP中定义的函数为: $smarty->registerPlugin(“function”,”my...

firstcode666的博客 534

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

smarty3 php自定义函数,smarty3使用自定义函数

smarty也像velocity一样支持自定义函数,smarty要使用自定义函数一般有两种方式一种就是写好方法后用smarty提供的注册机制完成,另一种就是把函数纳入到smarty的插件文件夹里。下面来分享下我的代码1.使用注册机制完成自定义函数或函数块要注意的是smarty3和smarty的区别,smarty2注册函数使用的是register_function函数块则使用register_blo...

weixin_39605326的博客 223

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

smarty中自定义函数

自定义函数:即可以自行修改的函数,它需要保存在plugins目录下               语法格式类似于html标记的写法               一、了解smarty自定义函数   例如: 1)  smarty自定义函数assign 作用:用于在模板被执行时为模板变量赋值. 函数名称:assign 参数:var:   声明变量名称  字符串       Value:

808

Smarty模板引擎中如何调用自定义函数

一些模板引擎只能解析变量,Smarty模板引擎可以解析自定义函数。 一下引用: 好久不用smarty这个模板引擎了,今天改一个老系统,当时做的时候还是用的这个,现在要在模板里调用自定义的函数获取数据或者传值给自定义函数,让它自动返回相应格式的模板代码。又遇到了这个Smarty模板引擎中如何调用自定义函数的问题。记得当时做的时候,查了好多资料,才找到怎么在smarty里用自定义函数的,现在写个示

盐碘 1005

php register_function smarty,smarty详解三:注册函数、自定义函数

12.注册函数我们从内建函数的使用能感受得到smarty的内建函数十分丰富也十分强大,但是我们也会存在一种需求:想要自己编写更符合或者更灵活的函数并在smarty中使用。Smarty的开发者当然考虑到了这种需求。在smarty模板中注册函数需要使用register_function()函数。例如:Index.php:Index.html输出结果:从上例我们可以认识到一点,函数printNum的参数...

weixin_39564151的博客 361

【smarty】smarty自定义函数

<?php require_once "smarty.config.php"; //自定义一个函数 //调用方法: function test1($args){ $str=""; for($i=0;$i<$args['times'];$i++){ $str.="{$args['con']}"; } return $str; } //自定义一个块方式函数 //调用方法 function test2(

PHP在线开发笔记 1302

smarty的自定义函数

smarty函数   实现对smarty的功能扩展    Smarty.class.php文件中成员方法      内建函数:smarty自带 ,不能修改   自定义函数:可以自行修改               保存在plugins目录下               语法格式类似于html标记的写法               ……}> 一、 了解smarty自定义函数

358
上一篇: php面向对象
下一篇: 内建函数
php398893944
博客等级 码龄15年 13粉丝 76原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值