Laravel 5模型命名空间类找不到。

3

我正在尝试按照这里所示的自定义命名空间和目录结构来存储我的模型:

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个回答

3

如果您的控制器存储在Modules/Core/Controllers中,则名称空间应为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');
    }

}

我应该如何调整我的路由器(请参见编辑)?目前它给我一个错误,说找不到类。 - imperium2335

1

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

namespace Modules\XMLApi;

我遇到了与上述相同的错误。当我将命名空间更改为以下内容时:
namespace Modules\XmlApi;

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

然后它就可以工作了。


谢谢。这个命令让我意识到我的 composer.json 文件中多了一个逗号。 - JCarlosR

0

你应该编辑你的 routes.php 文件:

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

使用命名空间时,要完整地使用


这给了我一个错误:类Modules\Core\Controllers\Modules\Core\TestController不存在。 - imperium2335
1
很奇怪,我运行了composer dump命令,现在它可以工作了。如果你只是修改了一个文件的路径,我原本以为不需要这样做的?:S - imperium2335
@imperium2335 使用 'composer dump' 也为我解决了类似的问题!感谢您的评论。 - drmonkeyninja

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接