如題,有兩種方案實現。
方案一:
Yii::$app->controller->route;
方案二:
Yii::$app->requestedRoute
看過原始碼後才知道這倆的區別。
方案一是根據當前請求已建立的 module / controller / action,也就是實際處理當前請求的模組、控制器、方法所組合而成的路由,絕對規範。
方案二是根據 UrlManager::routeParam 等配置,解析請求 URL 取得的訪問路由,不一定規範,但對使用者可見。
通常情況下兩種方法應該是等效的;某些特殊場景,例如修改過根據路由解析建立控制器的過程、內部反代重寫過 URL 等,則有可能導致兩方得到的值不一致。
根據不同業務場景使用不同的方法,對症下藥。