Skip to content
网游世界
网游世界

吾生有涯,而知无涯。

  • 首页
  • PHP
    • ThinkPHP
    • FastAdmin
    • webman
  • JavaScript
    • jQuery
    • AdminLTE
  • Free Pascal
  • Java
    • JeeSite
    • 若依
    • ruoyi-vue-pro
  • 其它
    • 操作系统
    • 树莓派
    • 前端
    • Null
  • 关于
网游世界

吾生有涯,而知无涯。

webman 用户模块增加菜单

3Vshej, 2024年1月8日 周一2024年1月8日 周一

webman 是一款基于 workerman 开发的 HTTP 服务框架,支持自定义进程,数据库,Redis,日志等功能,提供超高性能可扩展的 HTTP 服务。

官方提供了简单的用户模块,包含个人资料、头像和密码设置。

现在需要在用户模块中添加一些菜单。

在 plugin/user/api/Template.php 文件,getSidbarData 方法中定义了默认的菜单项。本打算在这里修改,但细想,这里不太合适,遂查找官网,找到了这篇webman用户模块,添加顶部菜单了,页面无法显示文章。

首先,在事件配置文件 plugin/oauth/config/event.php,定义配置:

(这个文件是我的写的插件中用到的,后期根据需要自定在配置中增加)

<?php

use plugin\oauth\app\service\UserEvent;

return [
    // 当有用户注册时
    'user.register' => [
        [UserEvent::class, 'onUserRegister']
    ],
    // 当用户退出时
    'user.logout' => [
        [UserEvent::class, 'onUserLogout'],
    ],
    // 当渲染用户端导航菜单时
    'user.nav.render' => [
        [UserEvent::class, 'onUserNavRender']
    ],
    // 当渲染用户中心左侧边栏时
    'user.sidebar.render' => [
        [UserEvent::class, 'onUserSidebarRender']
    ],

];

之后,在 plugin/oauth/app/service/UserEvent.php 定义用户事件:

(根据需要,配置 onUserNavRender 在顶部显示菜单,onUserSidebarRender 在左侧显示菜单)

<?php

namespace plugin\oauth\app\service;

use stdClass;

/**
 * 用户相关事件
 */
class UserEvent
{

    /**
     * 用户注册时
     * @return void
     */
    public function onUserRegister()
    {

    }

    /**
     * 用户退出时
     * @return void
     */
    public function onUserLogout()
    {

    }

    /**
     * 当渲染用户端顶部导航菜单时
     * @param stdClass $object
     * @return void
     */
    public function onUserNavRender(stdClass $object)
    {
        $request = request();
        $path    = $request ? $request->path() : '';

        // 用户登陆后才显示顶部菜单
        if (session('user.id')) {
            $object->navs[] = [
                'name'  => '应用管理',
                'items' => [
                    ['name' => '创建应用', 'url' => '/app/oauth/index/create', 'class' => $path === '/app/oauth/index/create' ? 'active' : ''],
                    ['name' => '应用列表', 'url' => '/app/oauth/index/list', 'class' => $path === '/app/oauth/index/list' ? 'active' : ''],
                ]
            ];
        }
    }

    /**
     * 当渲染用户中心左侧菜单时
     * @param stdClass $object
     * @return void
     */
    public function onUserSidebarRender(stdClass $object)
    {
        $request = request();
        $path    = $request ? $request->path() : '';
        // 添加左侧菜单
        $object->sidebars[] = [
            'name'  => '应用管理',
            'items' => [
                ['name' => '创建应用', 'url' => '/app/oauth/index/create', 'class' => $path === '/app/oauth/index/create' ? 'active' : ''],
                ['name' => '应用列表', 'url' => '/app/oauth/index/list', 'class' => $path === '/app/oauth/index/list' ? 'active' : ''],
            ]
        ];
    }
}

开发插件时,某些功能,要求用户登录,那么你需要配置中间件,在 plugin/oauth/config/middleware.php 文件定义:

(这里直接使用了用户模块的中间件)

<?php

use plugin\user\api\Middleware as UserMiddleware;
return [
    '' => [
        new UserMiddleware(['admin'])
    ],
];

 

 

 

相关文章:

  1. PHP OAuth2 Server 密码凭证授权 密码凭证 对于 Web 和本机应用程序中受信任的第一方客户端来说,此授权都是出色的用户体验。...
  2. PHP OAuth2 Server 刷新授权 访问令牌最终会过期;但是,某些授权使用刷新令牌进行响应,使客户端能够刷新访问令牌。...
  3. PHP OAuth2 Server 授权服务器事件 在通过授权服务器的请求的生命周期中,可能会发出许多事件。 您可以通过将侦听器附加到授权服务器来订阅这......
  4. PHP OAuth Server 用户存储库接口文档 getUserEntityByUserCredentials() : UserEntityInter......
PHP webman PHPwebman用户模块菜单

文章导航

Previous post
Next post

近期文章

  • Android Studio Gradle 配置国内镜像
  • 为什么重新发明轮子
  • ruoyi-vue-pro 匿名访问
  • VUE 中接收 code 异常
  • 关于 AI

归档

  • 2025 年 4 月
  • 2025 年 3 月
  • 2025 年 2 月
  • 2025 年 1 月
  • 2024 年 12 月
  • 2024 年 11 月
  • 2024 年 10 月
  • 2024 年 9 月
  • 2024 年 8 月
  • 2024 年 7 月
  • 2024 年 6 月
  • 2024 年 5 月
  • 2024 年 4 月
  • 2024 年 3 月
  • 2024 年 2 月
  • 2024 年 1 月
  • 2023 年 12 月
除非特殊说明,本站作品采用知识共享署名 4.0 国际许可协议进行许可。
豫公网安备 41010402002622号 豫ICP备2020029609号-3
©2025 3Vshej