程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> thinkphp自定義標簽,view直接標簽連接數據

thinkphp自定義標簽,view直接標簽連接數據

編輯:關於PHP編程

 

首先,需要在

ThinkPHP\Lib\Think\Template\TagLib\目錄下增加一個文件名叫:TagLibZpass.class.php

TagLibZpass.class.php:

 

<?php 

/*   Zpass自定義標簽  design by zpass [email protected],請別加QQ好友- -! */ 

class TagLibZpass extends TagLib{ 

    // 標簽定義 

    protected $tags   =  array( 

        // 標簽定義:attr 屬性列表close 是否閉合(0 或者1 默認1)alias 標簽別名level 嵌套層次 

        'select'=>array('attr'=>'table,limit,order,where,field','level'=>3), 

        ); 

    public function _select($attr,$content) 

    { 

        static $_iterateParseCache = array(); 

        //如果已經解析過,則直接返回變量值 

        $cacheIterateId = md5($attr.$content); 

        if(isset($_iterateParseCache[$cacheIterateId])) 

            return $_iterateParseCache[$cacheIterateId]; 

        $tag      = $this->parseXmlAttr($attr,'table'); 

        $db=M($tag['table']); 

        $list=$db->where($tag['where'])->order($tag['order'])->limit($tag['limit'])->field($tag['field'])->select(); 

        preg_match_all("/\[field\:\w*\]/",$content,$match); 

        $match=$match[0]; 

        $match=array_unique($match);//去掉數組重復項 

        foreach($match as $i=>$vo){ 

            $field[$i]=substr($vo,7,count($vo)-2);   

        } 

        foreach($list as $i=>$value){ 

            if($i==0){ 

                $parseStr=$content; 

            }else{ 

                $parseStr=$parseStr.$content; 

            } 

            foreach($match as $j=>$vo){ 

                $parseStr=str_replace($vo,$value[$field[$j]],$parseStr); 

            } 

        } 

        $_iterateParseCache[$cacheIterateId] = $parseStr; 

        if(!emptyempty($parseStr)) { 

            return $this->tpl->parse($parseStr); 

        } 

        return ; 

    } 

?> 

 

然後在視圖上寫上

<taglib name='zpass' />

調用的方法是

 

<zpass:select table="classes" order="sort desc" field="id,title" limit="3" > 

                        <span class="marginleft_1"><a href='{:U("News/index?id=[field:id]")}'>[field:title]</a></span> 

                        </zpass:select> 

 

 

這個很容易理解吧www.2cto.com

我這個只是例子,代表可以自由擴展THINKPHP標簽...做自己的特色標簽

以上標簽例子實際是查詢classes表裡的內容

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved