结合RXThinkCMF_TP6记录自定义标签的使用

Author Avatar
yyq 2021-05-04 15:46:25
  • 二维码

结合RXThinkCMF_TP6记录自定义标签的使用


                下载了一套开源后台框架项目RXThinkCMF_TP6,安装了下居然少了mysql文件,进官网看貌似要收费,好吧,看看代码也好。代码内有一处用到了TP6自定义标签,跟了下代码看到是在admin项目下config的view.php引入的,如下:

                // 预先加载的标签库

                    'taglib_pre_load'    => implode(',', [

                        \app\admin\widget\Widget::class,

                        \app\admin\widget\Common::class,

                        \app\admin\widget\Upload::class,

                        \app\admin\widget\Item::class,

                        \app\admin\widget\Editor::class,

                        \app\admin\widget\Layout::class,

                        \app\admin\widget\Icon::class,

                        \app\admin\widget\Checkbox::class,

                        \app\admin\widget\City::class,

                        \app\admin\widget\Date::class,

                    ]),


                    在admin\widget下建了一系列自定义的标签,此处只研究第一个Widget类


                NO1:当定位到\app\admin\widget目录时,下面木有找到相关的类,一个都木有,好吧,只能先结合官网的html页面分析下了


                NO2:首先在widget目录下新建文件Widget.php,内部初始内容为:

                    <?php

                    namespace app\admin\widget;

                    

                    use think\template\TagLib;

                    

                    class Widget extends Taglib{

                        // 标签定义

                        protected $tags = [

                    

                        ];

                    

                    }


            NO3:在admin项目的view目录下可以看到在meun视图下的index.html有使用到,如下:

                    <div class="layui-input-inline" style="width: auto;">

    {widget:query name="查询"}

    {widget:add name="添加菜单"}

    {widget:dall name="批量删除"}

    {widget:expand name="全部展开"}

    {widget:collapse name="全部折叠"}

                   </div>

            可以看到是使用的自闭合标签,开启官方页面可以看到显示的是一些BUTTON按钮


            NO4:在标签定义内添加自定义的标签如下:

                protected $tags = [

                        // 标签定义: attr 属性列表 close 是否闭合(0 自闭合 1 闭合) alias 标签别名 level 嵌套层次

                        'query'     => ['attr' => 'name', 'close' => 0],

                        'add'        => ['attr' => 'name', 'close' => 0],

                        'dall'     => ['attr' => 'name', 'close' => 0],

                        'expand'     => ['attr' => 'name', 'close' => 0],

                        'collapse'     => ['attr' => 'name', 'close' => 0],

                        'edit'            => ['attr' => 'name', 'close' => 0],

                        'delete'        => ['attr' => 'name', 'close' => 0],

                        'addz'          => ['attr' => 'name', 'close' => 0],

                    ];


            NO5:添加自定义标签替换的内容,以query为例:

                public function tagQuery($tag)

                {

                $name = $tag['name'];

                        $icon = '&#xe615;';

                        $parseStr = "<button class='layui-btn' lay-submit lay-filter='searchform' id='search'><i class='layui-icon'>".$icon."</i>".$name."</button>";

                        return $parseStr;

                }

                button类名等相关信息可以在官方页面找到,其他替换方法类似该定义


            NO6:此时刷新前端页面将显示对应的按钮部分

        


上一篇 返回列表 下一篇

发表评论

Tips:评论内容请文明用语