Как я могу добавить поддомен в Laravel Backpack панели администратора (backpackforlaravel)?

Как я могу добавить поддомен в Laravel Backpack панели администратора? Я хочу добавить поддомен в свою административную панель Laravel Backpack, мне нужно указать поддомен admin.example.com на административную панель Laravel Backpack. Laravel Backpack предоставляет префикс маршрута для панели администратора.

Я хочу использовать один и тот же исходный код проекта для сайта, администратора и API.

admin.example.com -> Администратор

api.example.com -> API

www.example.com -> Сайт

2 ответа

Вы можете заставить Laravel Backpack работать под субдоменом, например admin.app.local, вместо префикса (например, app.local/admin) следующим образом:

В файле.env вы можете определить поддомен администратора, что будет полезно, если вы работаете в разных средах, где он меняется:

ADMIN_SUBDOMAIN = admin.app.local

При желании вы также можете определить в config / app.php, будет ли админ использовать поддомен, добавив:

'use_admin_subdomain' => true,

Затем в файле config/backpack/base.php вы захотите прекратить использование префикса маршрута администратора, так как вы будете использовать admin в поддомене, поэтому вы должны определить:

'route_prefix' => '',

Затем в routes/backpack/custom.php вы сможете включить все маршруты в новую группу, которая определит, работает ли админский рюкзак под субдоменом (определенным в app.use_admin_subdomain) и субдоменом (определенным в env('ADMIN_SUBDOMAIN'), и все исходные маршруты и группы войдут в:

Route::group (
    config('app.use_admin_subdomain') ? ['domain' => env('ADMIN_SUBDOMAIN')]: []
    , function () {

  ... original backpack routes

});

При желании в том же файле маршрутов рюкзака вы можете удалить префикс исходных маршрутов, добавив:

'prefix' => config ('backpack.base.route_prefix', 'admin'),

Хотя пустота в config/backpack/base.php еще не действует без комментариев.

Вы можете выполнить ту же процедуру, чтобы определить свои маршруты API в поддомене api.app.local, в этом случае в файле routes/api.php.

Для тех, кто также хочет использовать базовые маршруты Backpack на поддомене (Lara: 8.0, Backpack: 4.1):

  1. Изменить настройки в вашем config/backpack/base.phpкак показано ниже:
         'route_prefix' => '',
   'setup_auth_routes' => false,
   'setup_password_recovery_routes' => false,
   'setup_dashboard_routes' => false,
   'setup_my_account_routes' => false,
  1. Копировать маршруты из vendor/backpack/crud/src/routes/backpack/base.phpна ваш routes/web.phpили там, где вам это нужно. В моем случае:
      Route::domain('admin.' . env('APP_DOMAIN'))->middleware(config('backpack.base.web_middleware'))->group(function () {
    // Base routes
    Route::namespace('Backpack\CRUD\app\Http\Controllers')->group(function () {
        Route::get('dashboard', 'AdminController@dashboard')->name('backpack.dashboard');
        Route::get('/', 'AdminController@redirect')->name('backpack');

        // Authentication Routes...
        Route::get('login', 'Auth\LoginController@showLoginForm')->name('backpack.auth.login');
        Route::post('login', 'Auth\LoginController@login');
        Route::get('logout', 'Auth\LoginController@logout')->name('backpack.auth.logout');
        Route::post('logout', 'Auth\LoginController@logout');

        // Registration Routes...
        Route::get('register', 'Auth\RegisterController@showRegistrationForm')->name('backpack.auth.register');
        Route::post('register', 'Auth\RegisterController@register');

        Route::get('password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm')->name('backpack.auth.password.reset');
        Route::post('password/reset', 'Auth\ResetPasswordController@reset');
        Route::get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm')->name('backpack.auth.password.reset.token');
        Route::post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail')->name('backpack.auth.password.email');

        Route::get('edit-account-info', 'MyAccountController@getAccountInfoForm')->name('backpack.account.info');
        Route::post('edit-account-info', 'MyAccountController@postAccountInfoForm')->name('backpack.account.info.store');
        Route::post('change-password', 'MyAccountController@postChangePasswordForm')->name('backpack.account.password');
    });
    
    // Custom CRUD routes
    Route::namespace('App\Http\Controllers\Admin')->group(function () {
        Route::crud('user', 'UserCrudController');
    });
});

! Не забудьте удалить исходный файл ifзаявления

Другие вопросы по тегам