Dalam sistem multi-tenancy modern, memberikan sub-domain tertentu untuk setiap pengguna atau perusahaan seperti blog.matawebsite.com cukup populer . Bagaimana cara menangani subdomain ini di route Laravel?
Kode di routes / web.php cukup mudah:
Route::domain('{company_name}.domain.com')->group(function () {
Route::get('users', 'UsersController@index');
});
Jadi {company_name} dapat berupa nilai apa pun ( tentu saja, Anda juga perlu mengonfigurasikannya di data DNS domain Anda ), lalu ini akan menjadi variabel parameter untuk Pengontrol, dengan nama yang sama.
public function index($company_name)
{
$company = Company::findOrFail($company_name);
$users = User::where('company_id', $company->id)->get();
return view('users.index', compact('users'));
}
Dengan file route ini, kita akan menemui punya masalah. Lalu kita perlu mengkonfigurasi server lokal kita agar memiliki domain domain.com tertentu ? Jangan khawatir, ada obat untuk itu, kita bahkan dapat menjadikan domain itu variabel:
Route::domain('{company_name}.' . env('SITE_URL', 'domain.com'))->group( // ...
Jadi sekarang seluruh string akan terdiri dari dua variabel - subdomain dan domain utama, keduanya dapat dikonfigurasi.
Untuk lingkungan lokal Anda, Anda dapat mengatur sesuatu seperti domain workspace.test , dan kemudian menambahkan ini ke file .env Anda :
SITE_URL=domain.test
Jika Laravel tidak menemukan nilai apa pun untuk SITE_URL , nilai defaultnya adalah workspace.com .
Itu saja, semoga sukses dengan proyek multi-tenancy Anda!
Lev Yasin
Instruktur Web Programming Mataweb
Sangat tertarik dengan dunia Pemrograman Web & Mobile, saat ini fokus pada bagian Backend Web Developer, menggunakan PHP sebagai bahasa pemrograman utama, biasanya saya menggunakan Laravel.