Laravel5 在子文件夹中的控制器中扩展



我有文件夹结构app/Http/Controllers/School,里面我有一个SchoolController:

namespace School;
class SchoolController extends BaseSchoolController {.....

和 BaseSchoolController:

namespace School
class BaseSchoolController extends BaseController {....

(基本控制器位于父控制器文件夹中)

 class BaseController extends Controller {...

这会产生一个错误:

    FatalErrorException in SchoolController.php line 5: Class 'SchoolBaseSchoolController' not found

有什么想法,谢谢?

不过似乎对这种结构感到满意:

  class SchoolController extends Controller {

从我马上看到的情况来看,命名空间是错误的。

Laravel 5使用PSR-4,这意味着每个命名空间必须与类文件的文件夹结构(包括供应商)匹配。

因此,对于app/Http/Controllers/School/SchoolController.php,命名空间应设置为:

<?php namespace AppHttpControllersSchool;

不仅仅是

<?php namespace School;

此外,如果应用名称不是默认名称 ( App ),请在命名空间上相应地更改它。

例如,如果您运行: php artisan app:name ACME

然后,命名空间应为:

<?php namespace ACMEHttpControllersSchool;

检查其他类,如 app/Http/Controllers/Auth/AuthController.php ,以了解应该如何完成。

最新更新