Laravel application structure (API, Back Office, Front office)

I need help to structure my Laravel application.

I want basically this structure:

  • API
  • Admin panel
  • Public website

I started creating this folder structure, which I think is pretty true:

app/
   Http/Controllers/
       API/
       Back/
       Front/
resources/
   assets/
       js/
          back/
          front/
       sass/
          back/
          front/
   views/
       back/
       front/

Problems

Elixir . How can I avoid using libraries or backend assets that will be included in external code and vice versa after launch gulp?

Submissions . How to use namespaces in Laravel views? For example, given pages1in views/front/, which is extending a bit page2. I want Blade to automatically search page2internally views/frontwhen compiling (rather than in views/back).

. ? ,

Route::group(['domain' => 'example.com'], function() {});

Route::group(['namespace' => 'Admin'], function() {});

?

+4
1

Elixir Gulp, mix . gulp script.js script2.js public/backend/final.js.

// backend assets
elixir(function(mix){
    mix.scripts([
        'js/back/script.js',
        'js/back/script2.js',
    ], 'public/backend/final.js', 'resources/assets');

    // here you can declare another group of assets using 'mix'

});

app/Providers/RouteServiceProvider :

public function map(Router $router)
{
    // backend namespace
    $router->group(['namespace' => 'App\Http\Controllers\BackEnd'], function ($router) {
        require app_path('Http/routes-backend.php');
    });

    // frontend namespace
    $router->group(['namespace' => 'App\Http\Controllers\FrontEnd'], function ($router) {
        require app_path('Http/routes-frontend.php');
    });

    // api namespace
    $router->group(['namespace' => 'App\Http\Controllers\API'], function ($router) {
        require app_path('Http/routes-api.php');
    });
}

:

  • app/Http/routes-backend.php >
  • app/Http/routes-frontend.php >
  • app/Http/routes-api.php > API

, , app/Http/routes-backend.php:

Route::get('dashboard', 'DashboardController@show');

:

Laravel? , 1 // 2 2 / .

, page1 autoloads page2 . @extends , , .

+3

Source: https://habr.com/ru/post/1610474/


All Articles