Ad

Laravel Parameter In Every Url

I have read almost everything in web and documentation but i can't find solution for my Problem.

I have a variable stored in Session , then I want to put this variable in every url generated by route('some-route') .

In Session I have sub = "mysubid"

When I generate Route route('my-route') I want to pass this sub parameter in query string: http://domain.dom/my-route-parameter?sub=mysubid

Can you help me to solve This problem? Any helpful answer will be appreciated;

Ad

Answer

You can use the Default Values feature.

First create a new middleware php artisan make:middleware SetSubIdFromSession. Then do the following:

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\URL;

class SetSubIdFromSession
{
    public function handle($request, Closure $next)
    {
        URL::defaults(['sub' => \Session::get('sub')]);

        return $next($request);
    } 
}

At the end register your new middleware in app/Http/Kernel.php by adding it to $routeMiddleware.

protected $routeMiddleware = [
   // other Middlewares
   'sessionDefaultValue' => App\Http\Middleware\SetSubIdFromSession::class,
];

Add {sub} and the middleware to your route definition:

Route::get('/{sub}/path', function () {  
   //
})
->name('my-route')
->middleware('sessionDefaultValue');

Since you want this on every web route you can also add the middleware to the web middleware group:

protected $middlewareGroups = [
    'web' => [
        // other Middlewares
        'sessionDefaultValue',
    ],

    'api' => [
        //
    ] 
];
Ad
source: stackoverflow.com
Ad