php技术博客
让天下没有搞不定的bug~

心得:ThinkPHP的标签库tagLib不起作用,怎么搞的

          今天小涛帮忙运行ThinkPHP开发的程序的时候,安装也能成功,就是登陆后台的时候总是不正常,用火狐的firebug查看了一下,原来引用的js找不到,然后我打开模板看了看,引用的js文件也是有的,不过这里引用js的时候是通过ThinkPHP的标签库tagLib引用的,比如:

<html:import type=”js” file=”Js.prototype” />
<html:import type=”js” file=”Js.Base” />
<html:import type=”js” file=”Js.mootools” />
<html:import type=”js” file=”Js.Ajax.ThinkAjax” />
<html:import type=”js” file=”Js.Form.CheckForm” />

一看源码,根本就没解析,怎么引用的的还是怎么输出的,然后,我就想了个办法,用原生态的js引用方法,看看他还有错没:

 

<script language=’JavaScript’ src=’__PUBLIC__/Js/prototype.js’></script>

<script language=’JavaScript’ src=’__PUBLIC__/Js/Base.js’></script>

<script language=’JavaScript’ src=’__PUBLIC__/Js/mootools.js’></script>

<script language=’JavaScript’ src=’__PUBLIC__/Js/Ajax/ThinkAjax.js’></script>

<script language=’JavaScript’ src=’__PUBLIC__/Js/Form/CheckForm.js’></script>

           哈哈,这样用的话 肯定能解析了,然后我又还原回去,看看到底什么原因,然后百度、google了一大堆,关于ThinkPHP的标签库tagLib的知识一大堆,没有一个出现过这种情况的,那怎么办呢,然后请教了一下同事涛哥,不到一分钟搞定,也能解析了,原来传输文件的时候,腾讯他丫的为了安全起见把文件改了,原先是html.xml的给改成html.xml.temp了,因为文件名改了,所以系统加载xml文件的时候找不到这个文件了。

        所以,最后总结一下,为什么不能解析呢?要想明白怎么解析的,前提就得明白实现的原理:标签库解析类的作用其实就是把某个标签定义解析成为有效的模版文件(可以包括 PHP 语句或者 HTML 标签)。扩展标签库需要添加标签库定义 XML 文件和标签库解析类。

     标签库由定义文件和解析类构成。每个标签库存在一个 XML 定义文件,用来定义标签库中的标签和属性。并且一个标签库文件对应一个标签库解析类,每个标签就是解析类中的一个方法。例如, CX 标签库的定义文件是 cx.xml 位于 ThinkTemplate/Template/Tags/ 目录下面,而 cx 标签库解析类文件是位于 ThinkTemplate/Template/TagLib/ 目录下面的 TagLibCx.class.php 文件,每个标签的解析方法就是 TagLibCx 类的一个方法,为了不和系统的关键字冲突,所以在方法名前加上了“ _ ” 前缀,因此,假如要定义 Cx:Var 的标签解析,就需要定义一个 _var 方法。

    小涛算是明白了,要想知道问题出在哪里,前提就得知道原理和过程。从原理和过程中寻找答案,相信会成功的!

     技术分享,技术交流,小涛与您共同成长……

 

赞(0)
未经允许不得转载:PHP技术博客 » 心得:ThinkPHP的标签库tagLib不起作用,怎么搞的

评论 1

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    既然在模板里直接用js也能解析,那为什么还要用这个标签库呢,换句话说,用标签的意义何在呢,比如在标签里有一些循环的标签,直接在那里写for不行吗?

    你好9年前 (2012-09-16)回复