搜索
系统检测到您的用户名不符合规范:

tp taglib 使用方法

浏览:982 发布日期:2018年09月09日 分类:ThinkPHP5专区 关键字: taglib thinkphp
以下是 在test模块新增的Menu自定义标签,不知道自己用的对不对,但感觉这标签还不如直接写个方法在模板里调用呢。
主要实现场景,是兼容layui 后台布局中的side 下来菜单的。
模板里 {menu:simple tree_data="tree_data"/}
menu代码
<?php
namespace app\test\taglib;
use think\template\TagLib;
use app\index\model\User;
class Menu extends TagLib{
/**
* 定义标签列表
*/
protected $tags = [
// 标签定义: attr 属性列表 close 是否闭合(0 或者1 默认1) alias 标签别名 level 嵌套层次
'simple' => ['attr' => 'tree_data', 'close' => 0], //闭合标签,默认为不闭合
//'open' => ['attr' => 'name,type', 'close' => 1],

];

/**
* 这是一个闭合标签的简单演示
*/
public function tagSimple($tag)
{
$parseStr = '';
$parseStr = $this->parse( $this->autoBuildVar($tag['tree_data']) );
return $parseStr;
}



/**
* @author mengdeliang
* 定制开发 layui 二级菜单生成器
*
*/

private function parse($initVarName){
$parse='<?php ';
$parse .= ' function _parseMenuTreeData($treeData){';
$parse .=' $return = \'\';';
$parse .=' foreach($treeData as $index=>$menu){';
$parse .=' $return .= \'<ul>\';';

$parse .=' if(isset($menu[\'children\']) && is_array($menu[\'children\']) && !empty($menu[\'children\'])){';
$parse .=' $return .= \'<li class="layui-nav-item">\';';
$parse .=' $return .= \'<a href="javascript:;">\'.$menu[\'name\'].\'</a>\';';
$parse .=' $return .= \'<dl>\';';
$parse .=' foreach($menu[\'children\'] as $cindex=>$citem){';
$parse .=' $return .= \'<dd>\';';
$parse .=' $return .= \'<a href="javascript:;">\'.$citem[\'name\'].\'</a>\';';
$parse .=' $return .= \'</dd>\';';
$parse .=' }';
$parse .=' $return .= \'</dl>\';';
$parse .=' $return .= \'</li>\';';
$parse .=' }else{';
$parse .=' $return .= \'<li>\';';
$parse .=' $return .= \'<a href="javascript:;">\'.$menu[\'name\'].\'</a>\';';
$parse .=' $return .= \'</li>\';';
$parse .='';
$parse .='';
$parse .=' }';
$parse .=' }';
$parse .='return $return;';
$parse .=' }';
$parse .= 'echo _parseMenuTreeData('.$initVarName.');';
return $parse;
}
}


控制器的tree_data

$tree_data =[
[
'name'=>'shouye1',
'alias' =>'index' ,
'url' => url('test/dd'),
'children'=>[

]
] ,

[
'name'=>'shouye2',
'alias' =>'index2' ,
'url' => url('test/dd2'),
'children'=>[
[
'name'=>'shouye2--children1',
'alias' =>'index' ,
'url' => url('test/dd'),
'children'=>[
[
'name'=>'shouye1xxx',
'alias' =>'index' ,
'url' => url('test/dd'),
'children'=>[

]
]
]
],
[
'name'=>'shouye2--children2',
'alias' =>'index' ,
'url' => url('test/dd'),
'children'=>[

]
],
]
]
];


$this->assign('tree_data' , $tree_data);
最佳答案
评论() 相关
后面还有条评论,
评论支持使用[code][/code]标签添加代码
您需要登录后才可以评论 登录 | 立即注册
收藏
muction
积分:1131 等级:LV3
热点推荐
(追記) (追記ここまで)
最新更新

我们

合作

网站

信息

ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。

AltStyle によって変換されたページ (->オリジナル) /