webman路由获取别名

supereric

找了文档,源码都没有发现获取路由别名的方法,于是自己在webman源码下小小修改了一下代码,希望以后更新版本中能增加获取路由别名的方法~

vendor/workerman/webman-framework/src/Route.php 增加以下代码

    protected static $_callBackName = [];

    public static function setCallBackByName($callBack,$name){
        self::$_callBackName[$callBack] = $name;
    }

    public static function getCallBackByName($callBack){
        return self::$_callBackName[$callBack]??'';
    }

    public static function getAllCallBack(){
        return self::$_callBackName;
    }

    public static function getCurrentName(){
        return self::getCallBackByName(self::getCurrentCallBack());
    }

    public static function getCurrentCallBack(){
        $request = App::request();
        return $request->controller.'@'.$request->action;
    }

vendor/workerman/webman-framework/src/Route/Route.php
76行 public function name 函数下增加代码

public function name($name)
    {
        $this->_name = $name;
        Router::setByName($name, $this);
        Router::setCallBackByName($this->_callback,$name); //增加这行代码
        return $this;
    }

调用方法为

use Webman\Route;
Route::getCurrentName();

当然要注意的是路由代码为

Route::any('/siteConfig/index', 'app\admin\controller\siteConfig@index')->name('siteConfigIndex');

当然我是很不喜欢修改源码。
可是我很喜欢这个框架,在弄自己的后台管理系统。实在不得已改了一下。
修改此方法是为了权限管理。

2665 4 1
4个回答

askuiop

我也觉得能获取路由名称是有必要的。

  • 暂无评论
大好时光

作者可以发个pr合并进去框架吗?这个很需要用到啊

  • 暂无评论
walkor

已经支持获取当前请求路由,请更新。
composer require workerman/webman-framework ^1.3.2

获取路由别名方法

$request->route->getName();
liziyu

我发现使用workerman的都是大佬啊,都会自个动手写代码,菜菜的我打心底崇拜!

这个功能太实用了,这样可以在模板里就不用写死了。

谢谢大佬们的辛苦付出。

  • 暂无评论
年代过于久远,无法发表回答
🔝