Я хочу создать папку структуры следующим образом:
root/ admin/ controllers/ AdminController.php BaseController.php models/ views/ app/ ... etc
Я обновил composer.json:
"autoload": { "classmap": [ "app/commands", "app/controllers", "app/models", "admin/controllers", "admin/models", "admin/views", "app/database/migrations", "app/database/seeds", "app/tests/TestCase.php" ] },
А затем запустите 2 команды: composer dump-autoload
, php artisan dump-autoload
и создайте маршрут: Route::get('/admin', 'AdminController@showWelcome');
, Но когда я попал в http: // localhost / lavarel / admin , я получаю сообщение об ошибке. Кто-нибудь может показать мне, как решить эту проблему?
Зарегистрируйте команду PSR-4 в вашем composer.json, как это
"psr-4" : { "root\\" : "YOUR_ROOT_FOLDER" }
Затем в root / admin / controllers / AdminController.php вам нужно пропустить пробел в классе и вызвать любой класс, который вы распространяете или используете как это
<?php namespace Root\Admin\Controllers; use BaseController; class AdminControllers extends BaseController { }
Не забудьте запустить автозагрузку композитора
EDIT: чтобы иметь возможность использовать представления в других папках, кроме папки приложения, вам придется регистрировать представления, я обычно делаю это через поставщика услуг, как это
В root / admin создайте папку под названием Providers
Внутри создайте файл AdminServiceProvider.php и напишите в этом
<?php namespace Root\Admin\Providers; use Illuminate\Support\ServiceProvider; class AdminServiceProvider extends ServiceProvider { public function register() { // } public function boot() { \View::addNamespace('admin', __DIR__ . '/../views/'); } }
Теперь зайдите into app/config/app.php
и прокрутите вниз до поставщиков, и до того, как конец массива добавит этот Root\Admin\Providers\AdminServiceProvider
Сохраните его и запустите composer dump-autoload
Теперь в int Root namespace Controllers вы можете вызвать любое представление, подобное этому
return View::make('admin::NAME_OF_YOUR_VIEW');
или если вам нужно получить доступ к представлению изнутри папки
return View::make('admin::NAME_OF_YOUR_FOLDER.NAME_OF_YOUR_VIEW');