2015-02-12 5 views
3

Я пытаюсь хранить свои модели в пользовательском пространстве имен и структуры каталогов, как показано здесь: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 

В любом случае это неверно, поэтому я думал, что это должны быть «Модули \ Основные \ 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' => '[email protected]']); 
}); 

ответ

3

Если ваш контроллер хранится в модулях/ядра/контроллеры, пространство имен должно быть namespace Modules\Core\Controllers;

А также, если модель хранится в модулях/CORE/Модели, его пространство имен 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'); 
    } 

} 
+0

Как настроить маршрутизатор (см. Править)? Это дает мне ошибку на данный момент, что класс не может быть найден. – imperium2335

0

Вы должны отредактировать файл routes.php:

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

использовать полный вместе с пространством имен

+0

Это дает мне: Class Modules \ Core \ Controllers \\ Модули \ Core \ TestController не существует – imperium2335

+1

Странно, я сделал свалку композитора, и теперь он работает. Я не думал, что вам нужно это сделать, если вы изменили путь в файле? : S – imperium2335

+0

@ imperium2335, используя «композиторский дамп», просто исправил аналогичную проблему для меня тоже! Спасибо за ваш комментарий. – drmonkeyninja

0

У меня была такая же проблема, как описано выше. В моем случае у меня было следующее пространство имен:

namespace Modules\XMLApi; 

У меня такая же ошибка, как указано выше. Когда я изменил пространство имен следующим образом:

namespace Modules\XmlApi; 

Затем запустите следующую команду: композитор свалка-автозагрузка

Затем он работал.

Смежные вопросы