# Middleware
You can automatize theme activation using provided middlewares.
# Web Middleware
Create a new Middleware in app/Http/Middleware
and configure your Laravel application to use it. This middleware must extends Hexadog\ThemesManager\Http\Middleware\ThemeLoader
middleware.
Here is an example of middleware which set a theme based on the request url. It activated admin
theme if current request url matches the http(s)://mydomain/admin
pattern and use the fallback theme otherwise.
<?php
namespace App\Http\Middleware;
use Closure;
use Hexadog\ThemesManager\Http\Middleware\ThemeLoader as HexadogThemeLoader;
class ThemeLoader extends HexadogThemeLoader
{
public function handle($request, Closure $next, $theme = null)
{
// Check if request url starts with admin prefix
if ($request-segment(1) === 'admin') {
// Set a specific theme for matching urls
$theme = 'hexadog/admin';
}
// Call parent Middleware handle method
return parent::handle($request, $next, $theme);
}
}
Edit App\Http\Kernel.php
file to add your new middleware into the list of middlewares used by your application.
<?php
namespace App\Http;
use Illuminate\Foundation\Http\Kernel as HttpKernel;
class Kernel extends HttpKernel
{
/**
* The application's global HTTP middleware stack.
*
* These middleware are run during every request to your application.
*
* @var array
*/
protected $middleware = [
// ...
\App\Http\Middleware\ThemeLoader::class,
];
// ...
}
# Route Middleware
Edit App\Http\Kernel.php file to add the route middleware into the list of middlewares used by your application.
// Within App\Http\Kernel Class...
protected $routeMiddleware = [
// ...
'theme' => \Hexadog\ThemesManager\Http\Middleware\ThemeLoader::class,
];
Once the middleware has been defined in the HTTP kernel, you can use the middleware method to assign a theme to a route (or a group of routes):
// Use theme named "one" for set of routes
Route::middleware('theme:one')->group(function() {
// Your routes definition here
});
// Use Theme names "two" for another set of routes
Route::middleware('theme:two')->group(function() {
// Your routes definition here
});
← Basic usage Assets →