2014-09-11 199 views
3

我正在使用“laravel/framework”:“4.2。*”版本,我想为我的项目使用模块系统。我遵循this document中提供的说明。为什么我在Laravel模块中找到“class not found”错误?

我可以使用以下命令创建模块:php artisan modules:create module_name。我在我的app目录中创建了一个管理模块,并且已经创建了该模块的目录结构。

我从管理模块控制器的动作中的一个使用DB::select('some SQL statement'),但它给我以下错误:

Class 'App\Modules\Admin\Controllers\DB' not found.

为什么无法找到这个类?

+0

使用自动加载'使用照亮的\ Support \外立面\ DB;' – 2017-02-23 14:22:43

回答

13

当使用DB或根名称空间之外的任何其他Laravel外观时,需要确保实际在根名称空间中使用该类。你可以在课前加一个\

\DB::select(...) 

或者您可以使用在类文件的use关键字,允许使用不同的命名空间中的类没有在每次使用它的时候明确写出命名空间。

<?php namespace App\Modules\Admin\Controllers; 

use DB; 
use BaseController; 

class ModuleController extends BaseController { 

    public function index() 
    { 
     // This will now use the correct facade 
     $data = DB::select(...); 
    } 
} 

注意,use关键字总是假定它加载从根命名空间的命名空间。因此,对于use,始终需要完全限定的名称空间。

0

否则你可以在composer.json

"autoload": { 
    "classmap": [ 
     "app/commands", 
     "app/controllers", 
     "app/models", 
     "app/database/migrations", 
     "app/database/seeds", 
     "app/tests/TestCase.php" 
    ] 
}, 
+0

您可以使用phpstorm IDE的编辑器,这将有助于它会照顾。这真的很有帮助。请尝试使用它。 – Ramesh 2016-04-28 06:59:53

相关问题