简体   繁体   English

未找到Laravel 5 Model命名空间类

[英]Laravel 5 Model namespace class not found

I am trying to store my models in a custom namespace and directory structure as shown here: 我试图将我的模型存储在自定义命名空间和目录结构中,如下所示:

在此输入图像描述

I have: 我有:

namespace Modules\Core;

use App\Http\Controllers\Controller;

class TestController extends Controller {

    public function index(){
        $user = new User;
        return view('core::test');
    }

}

But I am getting: 但我得到:

FatalErrorException in TestController.php line 8:
Class 'Modules\Core\User' not found

Which is wrong anyway, so I thought it must be 'Modules\\Core\\Models\\User'. 无论如何哪个是错的,所以我认为它必须是'Modules \\ Core \\ Models \\ User'。 I tried this and I still got the same error (just with a different class name). 我尝试了这个,但我仍然遇到了同样的错误(只是使用了不同的类名)。

My model: 我的模特:

namespace Modules\Core;

use Illuminate\Database\Eloquent\Model as Eloquent;

class User Extends Eloquent {
    protected $table = 'users';
}

How can I get access to this model in the TestController? 如何在TestController中访问此模型?


Route::group(array('namespace' => 'Modules\Core\Controllers'), function() {
    Route::get('/test', ['uses' => 'TestController@index']);
});

If your controller is stored in Modules/Core/Controllers, the namespace should be namespace Modules\\Core\\Controllers; 如果您的控制器存储在Modules / Core / Controllers中,则命名空间应为namespace Modules\\Core\\Controllers;

And likewise, if the model is stored in Modules/Core/Models, its namespace is namespace Modules\\Core\\Models; 同样,如果模型存储在Modules / Core / Models中,其命名空间是namespace Modules\\Core\\Models;

Then, in the controller, import it before using it: 然后,在控制器中,在使用之前导入它:

<?php namespace Modules\Core\Controllers;

use Modules\Core\Models\User;
use App\Http\Controllers\Controller;

class TestController extends Controller {

    public function index(){
        $user = new User;
        return view('core::test');
    }

}

I had the same problem as above. 我遇到了与上面相同的问题。 In my case I had the following namespace: 在我的情况下,我有以下命名空间:

namespace Modules\XMLApi;

I got the same error as above. 我得到了与上面相同的错误。 When I changed the namespace to the following: 当我将命名空间更改为以下内容时:

namespace Modules\XmlApi;

Then run the following command: composer dump-autoload 然后运行以下命令:composer dump-autoload

Then it worked. 然后它奏效了。

You should edit your routes.php file: 您应该编辑routes.php文件:

Route::group(array('namespace' => 'Modules\Core\Controllers'), function() {
    Route::get('/test', ['uses' => '\Modules\Core\TestController@index']);
});

to use full together with namespace 与命名空间一起使用

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM