Problem: Current Laravel need to serve different companies and have different stage(production, test, etc.)
Using Route::group and create a different folder for different website/stage.
Solution: follow post on this and this:
- Create folders for a different purpose and put controller you want inside it
/app
/controllers
/Api
/v1
/UserController.php
/v2
/UserController.php
In the UserController.php, remember to change namespace accordingly.
For example for controller under v1 folder
namespace Api\v1;
for controller under v2 folder
namespace Api\v2;
In the web.php, using Route::group to determine using which controller, like:
Route::group(['prefix' => 'api/v1'], function () {
Route::get('user', 'Api\v1\[email protected]');
Route::get('user/{id}', 'Api\v1\[email protected]');
});
Route::group(['prefix' => 'api/v2'], function () {
Route::get('user', 'Api\v2\[email protected]');
Route::get('user/{id}', 'Api\v2\[email protected]');
});
for any prefix like api/v1, using the controller under v1 folder.
Route::group(['domain' => 'itdailydocumentation.com'], function () {
Route::get('user', 'Api\v3\[email protected]');
Route::get('user/{id}', 'Api\v3\[email protected]');
});
for domain itdailydocumentation.com, using controller under v3 folder.
As for the version design for layout, you can also copy the view blade to a different folder:
views/
├── v1/
│ ├── master
| | ├── master-public.blade.php
| | ├── master-admin.blade.php
| | ├── master-user.blade.php
| ├── views
| | ├── home
| | ├── chat
| | ├── order
| | ├── reports
├── v2/
└── v3/