Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 07.10.2017 15:15:08

Разделить приложение на backend/frontend

Всем привет,

Нашел на 4й ветке как разделить приложение на backend/frontend и пытаюсь разделить аналогично в laravel 5.5.3
и для этого в routes/web.php пишу :

Route::get('/admin/category/index', 'Admin\CategoryController@index');

Переместил файл app/Http/Controllers/CategoryController.php в свежесозданную папку app/Http/Controllers/Admin/ и получил файл app/Http/Controllers/Admin/CategoryController.php
и в нем заменил namespace:

//namespace App\Http\Controllers;
namespace Admin;
use App\Http\Controllers\MyAppController;
...
class CategoryController extends MyAppController
{

    public function __construct()
    {
     ...

Оставил файл app/Http/Controllers/MyAppController.php на месте - ( я хочу чтобы все мои контролы и фронтенда и бекэнда наследовались от него ) с заголовком :

<?php

namespace App\Http\Controllers;
//namespace Admin;

use Route;
...

class MyAppController extends Controller
{
    protected $current_admin_template;
    ...

   
   
И получил ошибку :   

ErrorException (E_WARNING)include(.../app/Http/Controllers/Controller.php): failed to open stream: No such file or directory

В чем ошибка и как ее исправить?

  Спасибо!

Не в сети

#2 07.10.2017 15:20:24

Re: Разделить приложение на backend/frontend

Он тебе говорит о том, что файла app/Http/Controllers/Controller.php нет.

Не в сети

#3 07.10.2017 17:02:31

Re: Разделить приложение на backend/frontend

Блин, это я пытался запустить и осталась ссылка на несуществующий файл
Удалив его пробую сначала :
В routes/web.php

Route::get('/admin/category', 'Admin\CategoryController@index');

И есть файл app/Http/Controllers/Admin/CategoryController.php
с заголовком :

<?php

//namespace App\Http\Controllers;

//namespace App\Http\Admin\Controllers;

namespace Admin;

use App\Http\Controllers\MyAppController;
use DB;
use Auth;
use Illuminate\Http\Request;
use App\User;
use App\Category;
use Illuminate\Support\Facades\Gate;
use App\library\ListingReturnData;

class CategoryController extends MyAppController
{

    public function __construct()
    {
        parent::__construct();
        ...
    }

И ошибка в логе:

[2017-10-07 13:54:39] local.ERROR: Class App\Http\Controllers\Admin\CategoryController does not exist {"exception":"[object] (ReflectionException(code: -1): Class App\\Http\\Controllers\\Admin\\CategoryController does not exist at /mnt/_work_sdb8/wwwroot/lar/lprods/vendor/laravel/framework/src/Illuminate/Container/Container.php:752)
[stacktrace]
#0 /mnt/_work_sdb8/wwwroot/lar/lprods/vendor/laravel/framework/src/Illuminate/Container/Container.php(752): ReflectionClass->__construct('App\\\\Http\\\\Contro...')
#1 /mnt/_work_sdb8/wwwroot/lar/lprods/vendor/laravel/framework/src/Illuminate/Container/Container.php(631): Illuminate\\Container\\Container->build('App\\\\Http\\\\Contro...')
#2 /mnt/_work_sdb8/wwwroot/lar/lprods/vendor/laravel/framework/src/Illuminate/Container/Container.php(586): Illuminate\\Container\\Container->resolve('App\\\\Http\\\\Contro...', Array)
#3 /mnt/_work_sdb8/wwwroot/lar/lprods/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(721): Illuminate\\Container\\Container->make('App\\\\Http\\\\Contro...', Array)
#4 /mnt/_work_sdb8/wwwroot/lar/lprods/vendor/laravel/framework/src/Illuminate/Routing/Route.php(219): Illuminate\\Foundation\\Application->make('App\\\\Http\\\\Contro...')
#5 /mnt/_work_sdb8/wwwroot/lar/lprods/vendor/laravel/framework/src/Illuminate/Routing/Route.php(779): Illuminate\\Routing\\Route->getController()
#6 /mnt/_work_sdb8/wwwroot/lar/lprods/vendor/laravel/framework/src/Illuminate/Routing/Route.php(740): Illuminate\\Routing\\Route->controllerMiddleware()
#7 /mnt/_work_sdb8/wwwroot/lar/lprods/vendor/laravel/framework/src/Illuminate/Routing/Router.php(623): Illuminate\\Routing\\Route->gatherMiddleware()
#8 /mnt/_work_sdb8/wwwroot/lar/lprods/vendor/laravel/framework/src/Illuminate/Routing/Router.php(603): Illuminate\\Routing\\Router->gatherRouteMiddleware(Object(Illuminate\\Routing\\Route))
#9 /mnt/_work_sdb8/wwwroot/lar/lprods/vendor/laravel/framework/src/Illuminate/Routing/Router.php(571): Illuminate\\Routing\\Router->runRouteWithinStack(Object(Illuminate\\Routing\\Route), Object(Illuminate\\Http\\Request))
#10 /mnt/_work_sdb8/wwwroot/lar/lprods/vendor/laravel/framework/src/Illuminate/Routing/Router.php(549): Illuminate\\Routing\\Router->dispatchToRoute(Object(Illuminate\\Http\\Request))
#11 /mnt/_work_sdb8/wwwroot/lar/lprods/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(176): Illuminate\\Routing\\Router->dispatch(Object(Illuminate\\Http\\Request))
#12 /mnt/_work_sdb8/wwwroot/lar/lprods/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(30): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}(Object(Illuminate\\Http\\Request))

Почему двойное “\”  имени файла

App\\Http\\Controllers\\Admin\\CategoryController

в ошибке и почему он не найден ?

Не в сети

#4 14.10.2017 15:18:20

Re: Разделить приложение на backend/frontend

По-прежнему ищу решение.
Кто делал разделение приложения на backend/frontend, поделитесь пожалуйста заголовком в контролах админки.
Видимо у меня ошибка там...

Не в сети

#5 14.10.2017 22:33:54

Re: Разделить приложение на backend/frontend

Пространство имен должно быть:

namespace App\Http\Controllers\Admin;

Не в сети

#6 03.09.2018 17:06:25

Re: Разделить приложение на backend/frontend

Тоже долго мучился с поиском подходящей структуры. Структура, когда в каждой папке лежит по две папки Frontend и Backend мне почему-то не нравиться. Наверное привычка с пошла с CMS, когда админка в отдельной папке. Создал для себя такую структурку https://github.com/arion85/laravel-backend-frontend - сыровата, может где-то с багами, но времени пока не хватает допилить. Хотя в целом работает.

Не в сети

Подвал раздела