我正在構建一個前綴為 a的NewsManager插件。NewsControllerAdmin
我希望這個控制器既可以按原樣使用(與 route 一起使用/admin/news-manager/news/*),也可以作為可能因繼承而過載的父控制器。
這是我的代碼:
// plugins/NewsManager/Controller/Admin/NewsController.php
public function index()
{
$modelClass = $this->modelClass;
$news = $this->$modelClass->find()
->order(['created' => 'DESC']);
$this->set(compact('news'));
}
我想動態獲取modelClass以使繼承更容易。
當我去時/admin/news-manager/news,$modelClass上面的值回傳'NewsManager.News' ,然后find()請求回傳錯誤Undefined property: NewsController::$NewsManager.News
我該怎么做才能避免在插件中添加前綴modelClass?
uj5u.com熱心網友回復:
使用loadModel()(或從 4.3 開始fetchTable())不帶任何引數,然后加載控制器的默認模型集,例如:
$this->loadModel()->find()
或者:
$this->fetchTable()->find()
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/519740.html
上一篇:型別提示嵌套類的實體
