2016-07-16 61 views
0

我有一個非常簡單的routes.php文件文件:Laravel路由文件無法找到控制器

<?php 

Route::get('/', '[email protected]'); 

而且位於應用程序的簡單TracksController.php文件\ HTTP \控制器:

​​

但每當我試圖訪問該路線,我得到這個錯誤:

ReflectionException in Route.php line 280: 
Class App\Http\Controllers\TracksController does not exist 

我不知道我還能做什麼。我有:

  • 運行作曲家dumpautoload上的存儲/ *文件夾
  • 運行PHP工匠明確編譯
  • 經過許可強制TracksController的命名空間和/或FULLPATH在routes文件

但似乎沒有任何工作。

我甚至檢查了composer生成的vendor/composer/autoload_classmap.php文件,我找不到TracksController文件。

任何線索?

+0

檢查你函數'功能指數(){}'應該是'public'功能指數(){}' –

+0

使函數公開,並刪除它內部的一切,把這個'DD(」測試');'並刪除'使用應用程序\跟蹤作爲跟蹤;',如果你看到在你的網頁上的單詞測試,那麼答案是顯而易見的 –

+0

它可能是一個在你的問題中錯字,但命令應該是'composer dump-autoload',並帶有連字符。如果它不是一個錯字,試試看看是否能解決問題。 – patricus

回答

1

所以我以前的答案是不正確的,因爲帕特里特斯提出了公共修飾符。問題的確在於你的$tracks = Track::latest->get();

更改爲,你應該設置。

+0

如果未定義可見性,則PHP默認向公衆公開可見性。儘管指定它看起來更好,但將它關閉並不會改變代碼的工作方式。 – patricus

+0

我一直在用公開的,保護的,私人的說法,我沒有先嚐試過。感謝您的知識,patricus –

+0

沒問題。我也總是指定可見性。 – patricus

0

如果你在linux上,文件名和路徑是區分大小寫的。假設您沒有更改默認composer.json文件中的自動加載,PHP預計文件位於app\Http\Controllers\TracksController.php。在你的問題中,你指定它位於App\...

假設這是不是在這個問題一個錯字,您可能需要回重命名你App目錄app,或者你需要更新你的composer.json文件,讓它知道自動加載從App目錄,而不是app目錄:

"autoload": { 
    "classmap": [ 
     "database" 
    ], 
    "psr-4": { 
     "App\\": "App/" 
    } 
},