假設我有一條指向中間件的路由;將參數傳遞給Laravel中的中間件
Route::get("/user/{id}", ['middleware' => 'auth', function ($id) {
}]);
我的中間件代碼如下:
public function handle($request, Closure $next)
{
return $next($request);
}
如果我想在中間件使用$id
,我該怎麼辦呢?
假設我有一條指向中間件的路由;將參數傳遞給Laravel中的中間件
Route::get("/user/{id}", ['middleware' => 'auth', function ($id) {
}]);
我的中間件代碼如下:
public function handle($request, Closure $next)
{
return $next($request);
}
如果我想在中間件使用$id
,我該怎麼辦呢?
您可以用下面的方法之一來訪問路線參數在中間件:
第一種方法
$request->route()->parameters();
此方法將返回所有參數的數組。
$request->route('parameter_name');
這裏parameter_name
第二種方法指的是什麼,你叫路由中的參數。
在你的情況下,你不能通過$id
到中間件。
一般來說,你可以傳遞參數通過使用:
符號這樣的中間件:
Route::get('user/{id}', ['middleware' => 'auth:owner', function ($id) {
// Your logic here...
}]);
,並獲得傳遞的參數爲中間件的方法是這樣的:
<?php
namespace App\Http\Middleware;
use Closure;
class Authentication
{
public function handle($request, Closure $next, $role)
{
if (auth()->check() && auth()->user()->hasRole($role)) {
return $next($request);
}
return redirect('login');
}
}
注意,
handle()
方法,通常只需要一個$request
和 a$next closure
,有一個third parameter
,其中我我們的中間件 參數。如果您在多個參數傳遞給路由定義中間件 通話,只需添加更多的參數,你 handle()方法
希望這有助於!
你有'$ request'變量使用它:)('$ request-> id') – Kyslik