appstract / laravel-multisite
Multisite setup for Laravel
Installs: 10 467
Dependents: 0
Suggesters: 0
Security: 0
Stars: 216
Watchers: 17
Forks: 30
Open Issues: 1
Requires
- php: >=5.6
Requires (Dev)
- phpunit/phpunit: 5.*
README
With this package it is possible to build multiple sites/(sub)domains on one codebase.
Installation
You can install the package via composer:
composer require appstract/laravel-multisite
Config (hosts, homestead)
You need to add the sites to your /etc/hosts
file and Homestead.yaml
. For example, mywebsite.dev
and blog.mywebsite.dev
. In the Homestead.yaml
, you need to map the sites to the same folder.
Publish
By running php artisan vendor:publish --provider="Appstract\Multisite\MultisiteServiceProvider"
in your project all files for multisite will be published. The files that will be published are: a migration, a seeder and a config file.
Seeder
The seeder will be published but needs to be run when running php artisan db:seed
, so you need the add $this->call(SitesTableSeeder::class);
to your DatabaseSeeder.php
file. After migrating and seeding the sites are now present in the database.
Usage
This is the main part, within your routes/web.php
you can set routes for your sites within route groups, like this:
Route::group([ 'domain' => 'blog.'.config('multisite.host'), 'as' => 'blog.', 'middleware' => 'site:blog' ], function () { Route::get('/', 'BlogController@homepage')->name('homepage'); });
The magic happens with the site middleware site:blog
. This will tell your app that the routes within the group are belonging to the blog. It will provide a variable called $currentSite
in all your views. There is also a config available, which you can access with Config::get('multisite.site')
.
Testing
$ composer test
Contributing
Contributions are welcome, thanks to y'all :)
About Appstract
Appstract is a small team from The Netherlands. We create (open source) tools for webdevelopment and write about related subjects on Medium. You can follow us on Twitter, buy us a beer or support us on Patreon.
License
The MIT License (MIT). Please see License File for more information.