您现在的位置是:网站首页> 编程资料编程资料
tp5框架前台无限极导航菜单类实现方法分析_php实例_
2023-05-25
323人已围观
简介 tp5框架前台无限极导航菜单类实现方法分析_php实例_
本文实例讲述了tp5框架前台无限极导航菜单类实现方法。分享给大家供大家参考,具体如下:
适用于 id name pid sort 类似结构的表结构
使用方法:(tp5)
1、将最下面的代码保存到“前台”控制器目录下(名为 FrontNav.php),比如(路径): application/index/controll(应用/模块/控制器)
2、在控制器中使用:(application/index/controll/index)(应用/模块/控制器/方法)
也可以放到基础类的初始化方法中,如:Base.php 的 _initialize() 方法(不用多解释,这个是 tp5 的初始化方法 貌似 init() 也行?可以自己试试)
使用:
1)、第一步:先实例化本类, 5 个参数。
参数说明:
- param 1:必填 字符串类型 数据表名称(也是模型名称),不用其实字母大写也行。例如: category
- param 2:选填 字符串类型 模型所在的路径(默认是:admin模块下的model目录)。如果你不叫 admin,那么书写格式如下:houtai/model
- param 3:必填 字符串类型 父级栏目字段名称,例如:pid(parent id)
- param 4:选填 数组类型 默认是按 id 正序排序的,如果有排序字段 sortField 的值为 字段名称 如 sort 或者 listorder 等…,sortOrder 的值为 asc(正序) 或 desc (倒序),建议按这个排序,要不然会显示有点乱,因为权重的关系需要手动排序显示的位置。
- param 5:必填 二维数组 替换关键词,该参数的第一个数组为顶部导航所需要替换的关键词(必填),linkUrl(url 链接)是固定模式,必须这么写,它的值是:模块/控制器/方法,其他的键为要替换的关键词值为字段名称。第二个数组(选填)为二级菜单,第三个数组(选填)为N级菜单,此三个数组个数要对应 $this->createNavHtml() 方法中模版参数的个数,详见 createNavHtml() 方法解释。
$frontNav = new FrontNav('category', '', 'pid', array( 'sortField' => 'sort', 'sortOrder' => 'asc' ), array( array( 'linkUrl' => 'index/artlist/index', 'catName' => 'name', 'catDesc' => 'desc' ), array( 'linkUrl' => 'index/artlist/index', 'catName' => 'name', 'catDesc' => 'desc' ) )); 2)、第二步:生成 导航的 html 结构,4个参数
- param 1:选填 字符串类型 首页的 html 模版,例如 ‘
- 首页 '
- param 2:必填 数组类型 顶部导航的 html 模版,注意下面实例的格式写法
- param 3:选填 数组类型 二级菜单的 html 模版,同上
- param 4:选填 数组类型 N级菜单的 html 模版,同上
$navHtml = $frontNav->createNavHtml('- ', '
- catName', ' ', '
- ', '
- catName', ' ', '
3)、第三步:向模版输出
$this->assign(array( 'navHtml' => $navHtml ));
4)、第四步:模版调用(多余??)
提示:
1、替换关键词参数个数与模版(除了首页外)参数个数一定要对应,打字解释的可能有点不明白,详细的对照 实例化 和 创键方法 的代码看几遍就明白了,实在不行可以看源程序,都有较详细的注释。
2、本类默认模型优先,如果没有模型就会查表返回数据库实例。
3、还有一点要注意就是你的替换关键词尽量要跟模版里的字符串不要重复,比如说,你的替换关键词叫 ‘id' => catename,而模版里
求高手改成php原生的,可联系qq发给我吗?嘿嘿…
具体哪有不清楚的可以联系我QQ
效果图:(好像也支持无限极菜单)
db = Loader::model($fileName, 'model', false, 'admin'); } else { // 不确定在 linux 下数据库名称是否区分大小写,所以都转换成小写。 $this->db = Db::name(strtolower($fileName)); } // 无限极父类字段不能为空 if (!empty($pidName)) { $this->pidName = $pidName; } else { throw new \think\Exception('参数错误 $pidName(父栏目id),实例化时字段名称不能为空!'); } // 替换关键词 if (empty($replaceKeywords) || !is_array($replaceKeywords)) { throw new \think\Exception('参数错误 $replaceKeywords(替换关键词),实例化时该参数必须是而为数组类型且不能为空!');; } else { $this->replaceKeywords = $replaceKeywords; } $this->sort = $sort; } /** * 控制器调用,生成导航菜单。顶层导航的样式( 参数2 $levelOneTemplate )为必填项,也就是说最基本的是一层导航,二级和多级是选填项( 参数3: $levelTwoTemplate 与 参数4 $levelNTemplate 非必填项 ) * @param string $homePageHml 首页 标签的html样式,如: - ', 最外层 ul * '
- catName', li标签 * ' ', li 结束 * '
- ', 二级菜单的 ul * '
- catName', li标签 * ' ',li 结束 * '
- ', N级菜单的 ul * '
- catName', li标签 * ' ',li 结束 * '
更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《提示:
本文由神整理自网络,如有侵权请联系本站删除!
本站声明:
1、本站所有资源均来源于互联网,不保证100%完整、不提供任何技术支持;
2、本站所发布的文章以及附件仅限用于学习和研究目的;不得将用于商业或者非法用途;否则由此产生的法律后果,本站概不负责!
相关内容
- PHP中类与对象功能、用法实例解读_php实例_
- php设计模式之职责链模式实例分析【星际争霸游戏案例】_php实例_
- php设计模式之组合模式实例详解【星际争霸游戏案例】_php实例_
- PhpStorm的使用教程(本地运行PHP+远程开发+快捷键)_php实例_
- CentOS7系统搭建LAMP及更新PHP版本操作详解_php技巧_
- Centos7安装swoole扩展操作示例_php技巧_
- PHP开发api接口安全验证操作实例详解_php技巧_
- PHP使用PhpSpreadsheet操作Excel实例详解_php技巧_
- php中加密解密DES类的简单使用方法示例_php技巧_
- TP5框架使用QueryList采集框架爬小说操作示例_php实例_
