Laravel路由文件找不到控制器

时间:2016-07-16 03:20:53

标签: php laravel laravel-5

我有一个非常简单的routes.php文件:

<?php

Route::get('/', 'TracksController@index');

位于App \ Http \ Controllers的一个简单的TracksController.php文件:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Track as Track;

class TracksController extends Controller
{
    function index(){

        $tracks = Track::latest->get();
        return view('tracks')->with(compact('tracks'));

    }

}

但每当我尝试访问该路线时,我都会收到此错误:

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

我不知道我还能做些什么。我有:

  • 运行composer dumpautoload
  • 运行php artisan clear-compiled
  • 已检查存储/ *文件夹的权限
  • 强制路径文件中的TracksController的命名空间和/或完整路径

但似乎没有任何效果。

我甚至检查了作曲家生成的vendor / composer / autoload_classmap.php文件,我找不到那里的TracksController文件。

任何线索?

3 个答案:

答案 0 :(得分:1)

所以我之前的回答是错误的,因为patricus提出了公共修饰语。问题出在您的$tracks = Track::latest->get();

更改为$tracks = Track::latest()->get();,您应该设置。

答案 1 :(得分:0)

如果您使用的是Linux,则文件名和路径区分大小写。假设您没有更改默认composer.json文件中的自动加载,PHP希望文件位于app\Http\Controllers\TracksController.php。在您的问题中,您指定它位于App\...

假设这不是问题中的拼写错误,您需要将App目录重命名为app,或者需要更新composer.json文件以便让它知道要从App目录自动加载,而不是app目录:

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

答案 2 :(得分:0)

如果你使用的是资源控制器,你必须在routes/web.php文件中声明控制器的使用,如下:

value data
a      67
b      654
c      87
d      789
e      23

这里使用 Laravel 8。