thinkphp的缓存与taglib-html标签库

TP中的标签库
+-------------------------------------------------------------------------+
要使用标签库扩展,需要在项目配置文件中定义taglibs.php文件,格式如下:
return array(
    'mytag'=>'@.Taglib.TaglibMyTag',
)
+-------------------------------------------------------------------------+
然后在项目的的Lib/Taglib/目录下放入TagLibMytag.class.php标签解析文件,标签库可以放在Lib/TagLib/Tags下面自己定义(参考初始化方法)!

class TagLibMytag.class.php extends TagLib{
    //初始化标签库的定义文件
    public function _initalize(){
        $this->xml=dirname(__FILE__).'/Tags/mytag.xml';
    }
}
至于具体的标签库定义文件和标签解析方法的使用,后续再详细解释.
[注意事项]
1.修改标签库定义文件,需要删除项目编译缓存
2.标签库定义中的标签库类解析类路劲可以随意定义,使用import方法导入
+-------------------------------------------------------------------------+
怎么用代码删除缓存?

我的1.5下的清空缓存是这样的:

class CacheAction extends GlobalAction{
    function _initialize(){
        parent::_initialize();
        parent::checkLogin();//检测登录
        //$this->_checkSecurity('index');//权限检测
    }
    /*
    加载需要清理缓存部分
    TODOO:清理前台缓存设置
    */
    public function index(){
        $this->assign("caceh",array(
            "admin_app(后台)"=array(
                "模版缓存(Cache)"=>"./Manage/Runtime/Cache",
                "数据缓存目录(Temp)"=>"./Manage/Runtime/Temp",
            //    "日志记录(Logs)"=>"./Manage/Runtime/Data/Logs";
                "数据目录(Data)"=>"./Manage/Runtime/Data/_fields",
                "核心缓存(Runtime)"=>"./Manage/Runtime"
            ),
            "index_app(前台)"=>array(
                "模版缓存(Cache)"=>"./Index/Runtime/Cache",
                "数据缓存目录(Temp)"=>"./Index/Runtime/Temp",
        //        "日志目录(Log)"=>"./Index/Runtime/Logs",
                "数据目录(Data)"=>"./Index/Runtime/Data/_fields",
                "核心缓存(Runtime)"=>"./Index/Runtime"
            ),

        ));
        $this->display();
    }
    /**
    执行清理过程
    **/
    public function clear(){

        $dirs=$_POST['id'];
        //dump($dirs);
        $say="清理缓存文件夹成功!<br/>";
        foreach($dirs as $value){
            $this->checkCache($type=0,$path=$value);
            $say.=$value."<br/>";
        }
        //更新日志
        parent::upLog($_SESSION["admin"],$_SESSION["admin"]."清理缓存成功",0);

        $this->assign("jumpUrl",__APP__."/index/main");
        $this->assign("waitSecond",3);
        $this->success($say);
    }

    //清空缓存目录
    private function clearCache($type=0,$path=NULL){
            if(is_null($path)){
                switch($type){
                    case 0://模版缓存目录
                    $path=CACHE_PATH;
                    break;
                    case 1:
                    $path=TEMP_PATH;
                    break;
                    case 3:
                    $path=DATA_PATH;
                }
            }
            import("@ORG.Io.Dir");
            Dir::del($path);//删除目录
    }
}

//清空缓存
    public function shanchu(){
        header("Content-Type:text/html;charset=utf-8");
        $caches=clearCache(0);
        $this->redirect('admin','Index');
    }


+--------------------------------------------------------------------+
8-8日到13一周总结:

在tp2.1手册中取模操作的一点操作:
<volist name="list" id="vo" mod="5">
{$vo.name}
<eq name="mod" value="4"><br/></eq>
</volist>

如果实际演示中第一行只显示4个,从第二行开始每行显示5个,其实简单,只要简单看以下缓存中的语句就明白了
<?php if(is_array($list)):$i=0;$__LIST__=$list;if(count($__LIST__)==0): echo "";else: foreach($__LIST__ as $key=>$vo):$i++;$mod=($i % 5)?><?php echo ($vo["ip"]);?>
初始的时候$i为0,但在取模的时候执行了++$i,即$i不是从0开始的而是从1开始的.所以第一行只显示了4个

runtime缓存目录
runtime-->目录下面的结构:
    Cache--->模版缓存
    Data---->数据目录,目录下的_fields为字段缓存
    Logs---->日志缓存
    Temp---->数据缓存
    ~app.php - 项目编译缓存文件包含项目配置文件,项目公共函数文件
开发中我们的文件随时都可能需要改动,这样我们有时候需要删除啊runtime目录下面的缓存才生效,如果不需要缓存文件,可以在项目入口文件的时候加入:
    define('NO_CACHE_RUNTIME',True);

在开启缓存的情况下更容易发现错误,不过有时候总是提示~runtime第二行有错误,是因为在生成编译缓存和核心缓存的时候去除了空白和注释,我们可以让他保留注释和空白这样我们更容易查找.只需要在入口文件加入:
define('STRIP_RUNTIME_SPACE',false);

3.URL大小写的问题
系统默认的规范是根据URL里面的moduleName和actionName来定位到具体的模块类,从而执行模块类的操作方法,如果是在LINUX环境下面,就会发生URL里面使用小写的时候不能找到模块类的情况,我们可以通过配置来解决:
'URL_CASE_INSENSITIVE'=>true
这样URL就不区分大小写了:
不过需要注意的是:
如果我们定义了一个UserTypeAction的模块类,那么URL的访问应该就是:
http://<serverName>/index.php/user_type/list
而不是:
http://<serverName>/index.php/usertype/list
4.在模版中引入文件
有的信任在模版中包含文件还是不明白,这里的文件路径
5.获取URL参数的值
$_GET;
$_POST

+--------------------------------------------------------------------------+
经验:
1.Action注意事项;
a.使用EmptyAction以及_empty函数进行空异常操作,重写异常抛出的表现方式
b.在Action类之前加上if(!defined("ThINK_PATH")) exit("Access Denied");确保外部include攻击
c.
+--------------------------------------------------------------------------+
寻求标签库使用说明:
http://bbs.thinkphp.cn/forum.php?mod=viewthread&tid=27295
+---------+

警告:在使用下列所说的任何标签库都需要

HTML第一行加入 <tarlib name=”cx,html” />
如果想单独引入cx标签库就直接写成<tarlib name=”cx” />
如果单独引入html标签库就直接写成<tarlib name=”html” />

原则上来讲所有的标签的属性是可以不增加的(因为tp并为进行强制验证^_^),不过为了你的正常使用,请在使用的时候按照需要进行添加

首先我们来说html标签库的信息

Editor标签
<html:editor
id=”editory”
name=”remarke”
type=”FCKeditor”
content=”” />

属性
        Id 属性
                编辑器的id值,
                如果并未填写改属性,则会默认为_editor

        Name 属性 必须的
                编辑器的 name值
                如果未填写,默认为空
        Width 属性
                编辑器的宽度
                如果未填写,默认为100%
        Height 属性
                编辑器的高度
                如果未填写默认为320px
        Content 属性
                编辑器的内容的初始化值
                如果未填写,则为空
        Type 属性
                编辑器的类型 默认情况下支持
Fckeditor  eWebEditor  NETEASE  UBB
如果填写的编辑器类型不存在,则会默认为 TextArea标签
指定Fckeditor 时,文件存放路径必须为 /Public/Js/FCKeditor/
指定eWebEditor 时,文件存放路径必须为/Public/Js/eWebEditor/
指定NETEASE 时,文件存放路径必须为/Public/Js/HtmlEditor/
指定UBB时,文件存放路径必须为/Public/Js/




imageBtn标签
        <html:imageBtn
                id=””
                name=””
type=""
value=""
click=””
style=”” />

        属性:
                Id属性
                        input的id值
                Name属性
                        input的name值
                Type 属性
                        input标记的类型
                        如果未填写 则默认为 button
                Value 属性
                        input标记的Value值
                click 属性
                        input 的click执行内容,可以为js语句块,也可以为js函数
                style 属性
                        input标记外面生成div的样式

imgLink标签
<html:imgLink
        id=””
        name=””
        alt=””
        click=””
        style=””
type=""
value="" />

提示:
        这个标记增加了鼠标移上和移除的滤镜效果,推荐使用,不过内部实现是有问题的,如果需要使用的同志,请修改一下TagLibHtml.class.php 125行
$parseStr   = '<span class=".$style." ><input title="'.$alt.'" type="'.$type.'" id="'.$id.'"  name="'.$name.'" οnmοuseοver="this.style.filter=\'alpha(opacity=100)\'" οnmοuseοut="this.style.filter=\'alpha(opacity=80)\'" οnclick="'.$click.'" align="absmiddle" class="'.$name.' value="'.$value.'"></span>';

属性:
        id属性
                input的id值
        name属性
                input的name值
        alt属性
                input的title值
        style属性
                input标记外面生成的span的样式
        click属性
                input的click执行内容,可以为js语句块,也可以为js函数
        type属性
                input属性的类别,如果不输入则默认为button
        value属性
                input 的value的值,不过在源代码里面并未使用

select标记

<html:select
options=""
selected=""
id=””
name=””
values=””
output=””
multiple=””
size=””
first=””
style=””
dblclick=””
change=”” />

属性:
        id属性
                select的id值
        name属性
                select的name值
        dblclick属性
                select 双击事件调用的js
        change属性
                select value值改变调用的js
        multiple属性
                select 是否以可以选择多项 值不固定,任意值均可
        style属性
                select 的样式
        size属性
                select 的行数
        first属性
                select 的第一个值,比如 请选择您的学历
        options属性
                select的项,为php的有键的数组,如果没有键的数组请使用values属性
                当两个属性同时存在时,以options为优先
                value的值为$key
        values属性
                select的项,为php无键的数组,当两个属性同时存在时,以options为优先
                value的值为数组的值
        selected属性
                select 默认的选中项
                当使用options属时,selected属性的内容与$key进行匹配,如果使用values属性
                则与内容进行匹配
        output属性
                select option项目的结尾串,比如
                <option value=”1”>小学学历</option>
                <option value=”2”>中学学历</option>
                <option value=”3”>大学学历</option>
                这里的情况,我们就可以直接设置output为 学历



checkbox标签
        <html:checkbox
checkboxes=""
checked=""
name=””
separator=”” />
提示:
checkboxes="" 请注意看这个属性 并不是checkboxs 在s的前面多了一个e
我想应该是官方手误吧,如果你愿意,请修改源码,或者说在使用的时候加上e
属性:
        name属性
                checkbox属性的name值,无论你输入什么,系统会默认增加[]
        checkboxes
                checkbox组,是php的有键数组(必须为有键数组),$key为checkbox项的value
                $value 为checkbox后面带的说明
        checked
                这里可以为数组,也可以为单个字符串
                如果为字符串,则与$key进行匹配 判断是否选中
                如果为数组,则匹配是否包含这个$key 判断是否选中
        separator
                分隔符,当一个checkbox项结束后的分隔符


radio标签
        <html:radio
radios=""
checked=""
checked=””
separator=”” />
属性
        radios
                radio组是php的有键数组(必须为有键数组),$key为radio项的value
                $value 为radio后面带的说明
        checked
                这里可以为数组,也可以为单个字符串
                如果为字符串,则与$key进行匹配 判断是否选中
        name属性
                radio属性的name值,无论你输入什么,系统会默认增加[]
        separator
                分隔符,当一个radio项结束后的分隔符

转载于:https://www.cnblogs.com/myok/p/4024061.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值