在YII2架構中
class BaseController extends Controller{
public function init(){ parent::init();}
}
例如:我要訪問user控制器中的某個方法(user控制器繼承這個Base控制器),我如何在這個BaseController控制器的init方法中擷取到我要訪問的控制器和方法呢?
回複內容:
在YII2架構中
class BaseController extends Controller{
public function init(){ parent::init();}
}
例如:我要訪問user控制器中的某個方法(user控制器繼承這個Base控制器),我如何在這個BaseController控制器的init方法中擷取到我要訪問的控制器和方法呢?
你可以看一下Yii->$app中的資訊。
試試$this->getId()
擷取controller
的名字,$this->getAction()
擷取action
的名字
有必要嗎?有很多方法可以達到目的,為啥要選擇這種難以理解的方法呢?
A) 如果父類需要這個方法,那麼應該在父類中聲明
class a extends controller { public function f();}class b extends a {}
B) 這是一個特定的處理,因此不特定會在什麼時候被調用,我通常使用這種方式
class UserModel { public function doSomething();}class a extends controller { public function init() { UserModel::doSomething(); }}class b extends a { public function callDoSomething() { UserModel::doSomething(); }}
總之,我覺得是思路不好,或許你可以說清楚當前的狀態和你要達到的目的,我們幫你找一個更好的解決思路?