1. Create a middleware
1 |
php artisan make:middleware MemberInfo |
2. Modify middleware MmeberInfo
To share logged in member data to all views in the group
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
namespace App\Http\Middleware; use Closure; class MemberInfo { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { \View::share('member', auth()->user()); return $next($request); } } |
3. Add this middleware to /app/Http/Kernel.php
1 2 3 4 5 6 7 8 9 10 11 12 |
protected $routeMiddleware = [ 'auth' => \App\Http\Middleware\Authenticate::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class, 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class, 'can' => \Illuminate\Auth\Middleware\Authorize::class, 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, 'member_info' => \App\Http\Middleware\MemberInfo::class, ]; |
4. Apply this middleware to route
1 2 3 |
Route::group(['prefix' => 'member', 'middleware' => ['auth:web', 'member_info']], function(){ Route::get('/', 'Member\Member@index'); }); |
After apply this middleware, every controller and view in the route group are able to access $member variable easily.
Reference:
- Pass data to all views:
https://stackoverflow.com/questions/28608527/how-to-pass-data-to-all-views-in-laravel-5