如题,有两种方案实现。

方案一:

Yii::$app->controller->route;

方案二:

Yii::$app->requestedRoute

看过源码后才知道这俩的区别。

方案一是根据当前请求已创建的 module / controller / action,也就是实际处理当前请求的模块、控制器、方法所组合而成的路由,绝对规范。

方案二是根据 UrlManager::routeParam 等配置,解析请求 URL 取得的访问路由,不一定规范,但对用户可见。

通常情况下两种方法应该是等效的;某些特殊场景,例如修改过根据路由解析创建控制器的过程、内部反代重写过 URL 等,则有可能导致两方得到的值不一致。

根据不同业务场景使用不同的方法,对症下药。