路由 Laravel 5 错误

Routing in Laravel 5 error

Laravel5 中的路由对我来说似乎是一个主要问题。

我希望使用作曲家映射来遵循这个例子

https://mattstauffer.co/blog/upgrading-from-laravel-4-to-laravel-5#namespacing-controllers

避免模型或立面出现任何问题。

但是当我路由到这个:

Route::get('school/test', 'school\SchoolController@index');

错误

    ReflectionException in Container.php line 776: Class school\SchoolController does not exist

SchoolController 在 HTTP/controllers/school 文件夹中:

  namespace School
  class SchoolController extends Controller{
     public function index() {
        return "hello";
     }
 }

路由服务提供商:

 protected $namespace=NULL

作曲家设置为 HTTP/controllers

 "classmap": [
        "database",
        "app/Models",
        "app/HTTP/Controllers"

    ]

适用于这样的路线:

Route::resource('courses', 'CourseController');

所以路由器只是没有在子文件夹中找到文件。请问是什么问题?

看来唯一的选择是

 RouteServiceProvider

  protected $namespace = 'App\Http\Controllers';

Composer.json

  `"classmap": [
        "database",
        "app/Models"        
    ],

App\Http\Controllers;

中的 HomeController
 namespace App\Http\Controllers;
 use App\Models\Course;

 class HomeController extends Controller {
 public function index()
 {
    $courses =Course::orderBy('created_at','DESC')->with('school')->paginate(12);

 }

但这意味着我需要为超过 100 个控制器文件添加 'use App/...',具有不同的模型!

感谢到目前为止的帮助,但如果可能的话,我真的在寻找方法一,因为方法二涉及将所有模型贴图放置在每个控制器中(大量代码)。除非有一种全局方式将所有模型映射到一个文件中?

有人建议使用 Alias,但这行不通。

再次重申这个问题。 使用 composer 进行映射的 Controllers 子文件夹路由失败

Laravel 将默认搜索 App\Http\Controllers 中的控制器。您可以通过编辑 App\Providers\RouteServiceProvider:

来更改该命名空间
protected $namespace = 'App\Http\Controllers';

在你的情况下,因为你根本不需要 "base namespace",所以将它设置为 null:

protected $namespace = null;

  1. 创建的目录结构:app/Controllers/Folder(名称并不重要,只要与其他名称匹配即可)
  2. Folder 中创建了控制器:TestController.php (namespace Folder;)
  3. composer.json 中编辑了 autoload > classmap 并添加了 "app/Controllers"
  4. 运行 composer dump-autoload