未找到Laravel 5 Model命名空间类

时间:2015-02-12 21:46:58

标签: php laravel namespaces laravel-5

我正在尝试将模型存储在自定义命名空间和目录结构中,如下所示:

enter image description here

我有:

namespace Modules\Core;

use App\Http\Controllers\Controller;

class TestController extends Controller {

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

}

但我得到了:

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

无论如何都是错的,所以我认为它必须是'Modules \ Core \ Models \ User'。我尝试了这个,但我仍然遇到了同样的错误(只是使用了不同的类名)。

我的模特:

namespace Modules\Core;

use Illuminate\Database\Eloquent\Model as Eloquent;

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

如何在TestController中访问此模型?


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

3 个答案:

答案 0 :(得分:3)

如果您的控制器存储在模块/核心/控制器中,则命名空间应为namespace Modules\Core\Controllers;

同样,如果模型存储在Modules / Core / Models中,其名称空间为namespace Modules\Core\Models;

然后,在控制器中,在使用之前导入它:

<?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');
    }

}

答案 1 :(得分:0)

您应该修改routes.php文件:

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

与命名空间

一起使用

答案 2 :(得分:0)

我遇到了和上面相同的问题。在我的情况下,我有以下命名空间:

namespace Modules\XMLApi;

我得到了与上面相同的错误。当我将命名空间更改为以下内容时:

namespace Modules\XmlApi;

然后运行以下命令: composer dump-autoload

然后它奏效了。

相关问题