是否有可能以及如何将可变参数传递给 Laravel 中的中间件
Is it possible and how do I if so to pass a variable parameter to a Middleware in Laravel
我想设置一个中间件来检查用户是否是他们所在页面的订阅者。我尝试了几个选项,但都需要将 URL 传递给中间件。
路线
Route::get('premium/{id}', function ($id) {
return $id;
})->middleware('subscribe:{$id}');
中间件
public function handle($request, Closure $next, $subscribe)
{
//dd($subscribe);
$c = DB::table('suscribes')->where('user_id', $request->user()->id)->where('subscribed_to', $subscribe)->count();
return $next($request);
}
上面的$subscribe 明明是returns一串{$id}但是试过拼接。有没有更好的方法?
因为我在使用 Cashier 和 Stripe,所以我也尝试为每个用户设置一个新计划。 From docs.
public function handle($request, Closure $next)
{
if ($request->user() && ! $request->user()->subscribed('main')) {
// This user is not a paying customer...
return redirect('billing');
}
return $next($request);
}
但我仍然需要将变量传递给'main'。
我不确定我是否完全理解您的要求。但是要获取某些请求路由参数的值,您可以使用 $request->route('param-identifyer') 函数。将 {$id} 作为参数传递给中间件是错误的方法。
public function handle($request, Closure $next, $subscribe)
{
dd($request->route('id'));
$c = DB::table('suscribes')->where('user_id', $request->user()->id)->where('subscribed_to', $subscribe)->count();
return $next($request);
}
我想设置一个中间件来检查用户是否是他们所在页面的订阅者。我尝试了几个选项,但都需要将 URL 传递给中间件。
路线
Route::get('premium/{id}', function ($id) {
return $id;
})->middleware('subscribe:{$id}');
中间件
public function handle($request, Closure $next, $subscribe)
{
//dd($subscribe);
$c = DB::table('suscribes')->where('user_id', $request->user()->id)->where('subscribed_to', $subscribe)->count();
return $next($request);
}
上面的$subscribe 明明是returns一串{$id}但是试过拼接。有没有更好的方法?
因为我在使用 Cashier 和 Stripe,所以我也尝试为每个用户设置一个新计划。 From docs.
public function handle($request, Closure $next)
{
if ($request->user() && ! $request->user()->subscribed('main')) {
// This user is not a paying customer...
return redirect('billing');
}
return $next($request);
}
但我仍然需要将变量传递给'main'。
我不确定我是否完全理解您的要求。但是要获取某些请求路由参数的值,您可以使用 $request->route('param-identifyer') 函数。将 {$id} 作为参数传递给中间件是错误的方法。
public function handle($request, Closure $next, $subscribe)
{
dd($request->route('id'));
$c = DB::table('suscribes')->where('user_id', $request->user()->id)->where('subscribed_to', $subscribe)->count();
return $next($request);
}