解析ThinkPHP5.1自定義標(biāo)簽怎么用-創(chuàng)新互聯(lián)

這篇文章主要介紹解析ThinkPHP5.1自定義標(biāo)簽怎么用,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!

主要從事網(wǎng)頁設(shè)計、PC網(wǎng)站建設(shè)(電腦版網(wǎng)站建設(shè))、wap網(wǎng)站建設(shè)(手機(jī)版網(wǎng)站建設(shè))、成都響應(yīng)式網(wǎng)站建設(shè)、程序開發(fā)、微網(wǎng)站、微信小程序等,憑借多年來在互聯(lián)網(wǎng)的打拼,我們在互聯(lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)積累了豐富的成都做網(wǎng)站、成都網(wǎng)站建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、網(wǎng)絡(luò)營銷經(jīng)驗(yàn),集策劃、開發(fā)、設(shè)計、營銷、管理等多方位專業(yè)化運(yùn)作于一體,具備承接不同規(guī)模與類型的建設(shè)項(xiàng)目的能力。

近來有項(xiàng)目需要用的自定義的標(biāo)簽,TP使用的是5.1,各位要注意,5.1較5.0在目錄結(jié)構(gòu)和程序上有較大的改動。注意自己的版本。下面進(jìn)入正題。

一、創(chuàng)建標(biāo)簽函數(shù)文件

在模型目錄下創(chuàng)建目錄 tabLib,在目錄里創(chuàng)建一個Cms.php

namespace app\cms\tagLib;
use think\Db;
use think\template\TagLib;

class Cms extends TagLib{

    protected $tags = [
        //標(biāo)簽定義: attr 屬性列表,close 是否閉合(0或1,默認(rèn)1),alias標(biāo)簽別名 level嵌套層次
        'lists' => ['attr' => 'num,order,sort'],
    ];

    // 當(dāng)不使用content的時候,閉合標(biāo)簽沒有效果
    // 修改過此文件后,需要改動下模板的內(nèi)容,否則模板有緩存不會執(zhí)行新的內(nèi)容。
    public function tagLists($tag,$content){
        $cateID = $tag['cate_id']; //欄目ID
        $num    = $tag['num']; //數(shù)量
        $order  = input($tag['order']); //排序方式
        $type = $cateID;
        $name = $tag['name'];
        $tableName = 'table_name';
        $parse = '<?php $map=[];';
        $parse .= '$__LIST__ = Db::name('.$tableName.')->where(["cate_id"=>'. $cateID .'])
            ->limit('.$num.')
            ->select(); ?>';
        $parse .= '{volist name="__LIST__" id="'. $name .'"}';
        $parse .= $content;
        $parse .= "{/volist}";
        return $parse;
    }

在開發(fā)中遇到疑惑:

1. 上面的tagLists 函數(shù)對應(yīng) protected $tags中的標(biāo)簽定義,大小寫要注意,否則是找不到函數(shù)的。

2. $parse 字符中全部為組裝的字符串,該字符串會被TP的模板標(biāo)簽再解析一次,所以在里面可以使用TP原有的標(biāo)簽或原生的PHP語句。但是不可以把外面的Array或?qū)ο笞鰹閰?shù)傳入$param中,要知道他只是一個用來組裝的字符串。請注意 $__LIST__這個變量的使用,要想從數(shù)據(jù)庫中讀取數(shù)據(jù),必須寫完整的PHP代碼,不可以在外面執(zhí)行完查詢,然后把查詢后的list做為變量傳入。

二、在模板配置信息中加載此標(biāo)簽函數(shù)

在模塊 cms/config/template.php 中加入一句: 'taglib_pre_load' => 'app\cms\tagLib\Cms',

如果你沒有此文件,可以在根目錄里的config目錄下,復(fù)制一份template放到cms/config目錄下。

三、在模板中使用標(biāo)簽。

  {cms:lists name="row" num="10" cate_id="5" order="1"}
        <li>{$row.title}</li>
    {/cms:lists}

name, num ,cate_id 等屬性會作為tagLists的第一個參數(shù) $tags傳入。而{cms:lists} 和 {$/cms:lists}之間的內(nèi)容,會作為一個完整的字符串$content 傳入 tagLists 的第二個參數(shù)。

注意:這里分閉合標(biāo)簽和非閉合標(biāo)簽,如果是閉合標(biāo)簽,則必須在(一)中使用content,如果是非閉合標(biāo)簽則可以不用。如果你不使用content變量,則閉合的標(biāo)簽 {/cms:lists}會被原樣輸出,不會進(jìn)行解析。

暫時有這么多的困惑,關(guān)于分頁列表的問題還在研究,研究完了再補(bǔ)充上來。

補(bǔ)充:在tagList中不要對$tag[]數(shù)組中獲取到的數(shù)據(jù)進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換,因?yàn)楫?dāng)傳過來的是一個變量時,這個變量不會生效?。∷栽谶@里使用intval($tag[num])是不對的。

以上是“解析ThinkPHP5.1自定義標(biāo)簽怎么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

網(wǎng)頁題目:解析ThinkPHP5.1自定義標(biāo)簽怎么用-創(chuàng)新互聯(lián)
本文URL:http://bm7419.com/article44/goche.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)網(wǎng)站維護(hù)、搜索引擎優(yōu)化、小程序開發(fā)、網(wǎng)站設(shè)計、電子商務(wù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司