Mal*_*dze 0 php laravel-routing laravel-5 php-7.2 laravel-5.7
我已经阅读了Web和文档中的几乎所有内容,但找不到我的问题的解决方案。
我有一个变量存储在中Session,那么我想将此变量放入由生成的每个url中route('some-route')。
在Session我有sub = "mysubid"
当我生成Route时,route('my-route')我想sub在查询字符串中传递此参数:http://domain.dom/my-route-parameter?sub=mysubid
您能帮我解决这个问题吗?任何有帮助的答案将不胜感激;
您可以使用默认值功能。
首先创建一个新的中间件php artisan make:middleware SetSubIdFromSession。然后执行以下操作:
<?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);
}
}
Run Code Online (Sandbox Code Playgroud)
最后,app/Http/Kernel.php通过将您的新中间件添加到中来进行注册$routeMiddleware。
protected $routeMiddleware = [
// other Middlewares
'sessionDefaultValue' => App\Http\Middleware\SetSubIdFromSession::class,
];
Run Code Online (Sandbox Code Playgroud)
{sub}在您的路由定义中添加中间件:
Route::get('/{sub}/path', function () {
//
})
->name('my-route')
->middleware('sessionDefaultValue');
Run Code Online (Sandbox Code Playgroud)
由于您希望在每个网络路由上都这样做,因此也可以将中间件添加到web中间件组中:
protected $middlewareGroups = [
'web' => [
// other Middlewares
'sessionDefaultValue',
],
'api' => [
//
]
];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
444 次 |
| 最近记录: |