2016-01-19 19 views
1

當試圖訪問另一個控制器中的函數時,出現__construct() must be an instance of App\Models\Page, none given錯誤消息,我想知道如何解決這個問題...獲取__construct()必須是應用程序 Models Page的一個實例,沒有給出消息

其中函數是從稱爲控制器:

use App\Http\Controllers\Frontend\PagesController; 
... 
class ModulesController extends Controller { 

    public function filter(Request $request) { 
     $items = $this->loadFilteredItems($request->module_id, $request->filters); 
     $page = new PagesController(); 
     $header = $page->loadElements($request->id, false); 
     return View::make(
      'base.frontend.' . config('folder') . '.includes.filter', 
      compact('items', 'header')); 
     } 
    } 
} 

存儲所述功能控制器:

class PagesController extends Controller { 

    private $page; 

    public function __construct(Page $page) { 
     $this->page = $page; 
    } 

    private function loadElements($id) { 
     return 'something'; 
    } 

} 
+0

錯誤消息指出的問題到底是什麼。您需要傳遞「App \ Models \ Page」的實例。 '$ page = new PagesController();'改爲'$ page = new PagesController($ instanceOfModelPage);' –

+0

但是我該如何製作實例? –

+1

沒有與laravel一起工作。最簡單的方法'$ instanceOfModelPage = new App \ Models \ Page();'基於docs看起來像原始開發者默認覆蓋默認構造函數,默認情況下'Controller :: __ construct'不接受任何東西。看看它是如何在其他地方被召喚的。只需通過代碼庫 –

回答

0

適於在控制器到該:

class ModulesController extends Controller { 

    public function filter(Request $request) { 
     $items = $this->loadFilteredItems($request->module_id, $request->filters); 
     $page = new PagesController(); 
     $header = $page->loadHeaderElements($request->id); 
     return View::make(
      'base.frontend.' . config('folder') . '.includes.filter', 
      compact('items', 'header')); 
     } 
    } 
} 

class PagesController extends Controller { 

    /** 
    Removed these lines 
    private $page; 

    public function __construct(Page $page) { 
     $this->page = $page; 
    } 
    **/ 

    public static function loadHeaderElements($id) { 
     return $this->loadElements($id); 
    } 

    private function loadElements($id) { 
     return 'something'; 
    } 

} 

,它的工作現在

相關問題