91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

解析ThinkPHP5.1自定義標簽怎么用

發布時間:2021-01-19 10:11:27 來源:億速云 閱讀:247 作者:小新 欄目:編程語言

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

近來有項目需要用的自定義的標簽,TP使用的是5.1,各位要注意,5.1較5.0在目錄結構和程序上有較大的改動。注意自己的版本。下面進入正題。

一、創建標簽函數文件

在模型目錄下創建目錄 tabLib,在目錄里創建一個Cms.php

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

class Cms extends TagLib{

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

    // 當不使用content的時候,閉合標簽沒有效果
    // 修改過此文件后,需要改動下模板的內容,否則模板有緩存不會執行新的內容。
    public function tagLists($tag,$content){
        $cateID = $tag['cate_id']; //欄目ID
        $num    = $tag['num']; //數量
        $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;
    }

在開發中遇到疑惑:

1. 上面的tagLists 函數對應 protected $tags中的標簽定義,大小寫要注意,否則是找不到函數的。

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

二、在模板配置信息中加載此標簽函數

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

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

三、在模板中使用標簽。

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

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

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

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

補充:在tagList中不要對$tag[]數組中獲取到的數據進行數據類型轉換,因為當傳過來的是一個變量時,這個變量不會生效!!所以在這里使用intval($tag[num])是不對的。

以上是“解析ThinkPHP5.1自定義標簽怎么用”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平阴县| 翁源县| 禄丰县| 富蕴县| 巢湖市| 兰州市| 涞水县| 遵化市| 泸州市| 大庆市| 鲜城| 会东县| 林口县| 阿克苏市| 全州县| 河间市| 贺州市| 平泉县| 九江市| 龙江县| 江陵县| 雅安市| 瓦房店市| 上饶县| 海阳市| 安福县| 民勤县| 托克逊县| 南和县| 呼图壁县| 沧州市| 慈溪市| 三明市| 曲阜市| 新丰县| 老河口市| 沈丘县| 札达县| 潞西市| 怀化市| 辉南县|