解析ThinkPHP5.1自定义标签怎么用

  介绍

这篇文章主要介绍解析ThinkPHP5.1自定义标签怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

近来有项目需要用的自定义的标签,TP使用的是5.1,各位要注意,5.1较5.0在目录结构和程序上有较大的改动。注意自己的版本。下面进入正题。

一、创建标签函数文件

在模型目录下创建目录tabLib,在目录里创建一个Cms。php

 namespace 应用\ cms \ tagLib;
  use 认为\分贝;
  use 认为\ \ TagLib模板;
  
  class  Cms  extends  TagLib {
  
  ,,,protected  tags 美元;=,(
  ,,,,,,,//标签定义:,attr 属性列表,close 是否闭合(0或1,默认1),别名标签别名,层次嵌套层次
  ,,,,,,,& # 39;列出了# 39;,=祝辞,[& # 39;attr # 39;,=祝辞,& # 39;num,秩序,那种# 39;],
  ,,,);
  
  ,,,//,当不使用的内容的时候,闭合标签没有效果
  ,,,//,修改过此文件后,需要改动下模板的内容,否则模板有缓存不会执行新的内容。
  ,,,public  function 标记(标签,内容美元){
  ,,,,,,,cateID 美元;=,美元标签(& # 39;cate_id& # 39;];,//栏目ID
  ,,,,,,,num 美元;,,,=,美元标签(& # 39;num # 39;];,//数量
  ,,,,,,,order 美元;,=,输入($标签(& # 39;订单# 39;]);,//排序方式
  ,,,,,,,type 美元;=,cateID美元;
  ,,,,,,,name 美元;=,美元标签(& # 39;名字# 39;);
  ,,,,,,,tableName 美元;=,& # 39;table_name # 39;;
  ,,,,,,,parse 美元;=,& # 39;& lt; ? php 美元地图=[];& # 39;;
  ,,,,,,,parse 美元。=,& # 39;__LIST__ 美元;=,Db:名称(& # 39;。美元的表# 39;公司)→在((“cate_id"=祝辞& # 39;只cateID 美元;强生# 39;])
  ,,,,,,,,,,,→限制(& # 39;。美元num # 39;公司)
  ,,,,,,,,,,,→选择();,在& # 39;;
  ,,,,,,,parse 美元。=,& # 39;{volist 名称=癬_LIST__", id=? # 39;只name 美元;强生# 39;“}& # 39;;
  ,,,,,,,parse 美元。=,美元的内容;
  ,,,,,,,parse 美元。=,“{/volist}“;
  ,,,,,,,return  $解析;
  ,,,}

在开发中遇到疑惑:

1。上面的标记列表函数对应保护标签中美元的标签定义,大小写要注意,否则是找不到函数的。

2。美元解析字符中全部为组装的字符串,该字符串会被TP的模板标签再解析一次,所以在里面可以使用TP原有的标签或原生的PHP语句。但是不可以把外面的数组或对象做为参数传入美元参数中,要知道他只是一个用来组装的字符串。请注意__LIST__美元这个变量的使用,要想从数据库中读取数据,必须写完整的PHP代码,不可以在外面执行完查询,然后把查询后的列表做为变量传入。

二,在模板配置信息中加载此标签函数

在模块cms/config/模板。php中加入一句:& # 39;taglib_pre_load& # 39;=比;& # 39;应用\ cms \ tagLib \ cms # 39;,

如果你没有此文件,可以在根目录里的配置目录下,复制一份模板放到cms/配置目录下。

三,在模板中使用标签。

,,{cms: lists  name=皉ow", num=?0“, cate_id=?”,订单=?”;}   ,,,,,,,& lt; li> {$ row.title} & lt;/li>   ,,,{/cms:列表}

名称,num, cate_id等属性会作为标记的第一个参数美元标签传入。而{cms:列出}和{$/cms:列表}之间的内容,会作为一个完整的字符串内容传美元入标记列表的第二个参数。

注意:这里分闭合标签和非闭合标签,如果是闭合标签,则必须在(一)中使用的内容,如果是非闭合标签则可以不用。如果你不使用内容变量,则闭合的标签}{/cms:列表会被原样输出,不会进行解析。

暂时有这么多的困惑,关于分页列表的问题还在研究,研究完了再补充上来。

补充:在标记中不要对标签[]美元数组中获取到的数据进行数据类型转换,因为当传过来的是一个变量时,这个变量不会生效! !所以在这里使用intval中(标签(num)美元)是不对的。

以上是“解析ThinkPHP5.1自定义标签怎么用”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

解析ThinkPHP5.1自定义标签怎么用