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