Я использую версию «laravel / framework»: «4.2. *», И я хочу использовать модульную систему для своего проекта. Я выполнил инструкции, приведенные в этом документе .
Я могу создавать модули с помощью команды: php artisan modules:create module_name
. Я создал модуль администратора в моем каталоге приложений, и была создана структура каталога модуля.
Я использую DB::select('some SQL statement')
в одном из действий контроллера из модуля admin, но он дает мне следующую ошибку:
Класс 'App \ Modules \ Admin \ Controllers \ DB' не найден.
Почему он не может найти этот класс?
При использовании 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
всегда требуется полное пространство имен.
или вы можете использовать autoload в composer.json
"autoload": { "classmap": [ "app/commands", "app/controllers", "app/models", "app/database/migrations", "app/database/seeds", "app/tests/TestCase.php" ] },