增加,0為單機版;1為multi版
MULTI_SERVER=1
二、新增一個 middleware
php artisan make:middleware MultiMiddleware
修改它
...
public function handle($request, Closure $next)
{
if(!isset($_SESSION)) session_start();
if(env('MULTI_SERVER')=='0') $_SESSION['schoolDB'] = env('DB_DATABASE', 'forge');
if(env('MULTI_SERVER')=='1'){
if(empty($_SESSION['schoolDB'])){
$_SESSION['schoolDB']="";
return redirect('school_list');
}
}
return $next($request);
}
}
...
註冊此middleware
在 ./app/Http/下修改kernel.php,增加一個multi的類別
protected $routeMiddleware = [
'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'admin' => \App\Http\Middleware\AdminMiddleware::class,
'multi' => \App\Http\Middleware\MultiMiddleware::class,
];
三、修改 ./config/database.php
//第1行加入
<?php if(!isset($_SESSION)) session_start(); $schoolDB = $_SESSION['schoolDB']; ...
//約58行處,改成以下
... 'database' => $schoolDB, ...
四、做一個選擇學校的 route 及 view
route
修改web.php
//在根目錄下,用multi這個middleware驗證資料庫
Route::get('/', function () {
return view ('welcome');
})->middleware(multi::class);
//或是用group,底下的route都要這個驗證
Route::group(['middleware' => 'multi'],function(){
Route::get('/admin', function () {
...
});
});
//選擇學校的route
Route::get('school_list',function(){
return view('school_list');
});
//處理該校的資料庫
Route::get('school/{schoolDB}',function($schoolDB){
if(!isset($_SESSION)) session_start();
$_SESSION['schoolDB'] = $schoolDB;
return redirect('/');
});
view
新增一個 school_list.blade.php
每個連結到 /school/074xxx

沒有留言:
張貼留言