從中間件獲取當前路由操作名字我有這樣的一箇中間件:在laravel 5
<?php
namespace App\Http\Middleware;
use App\Contracts\PermissionsHandlerInterface;
use Closure;
class PermissionsHanlderMiddleware {
public $permissionsHandler;
function __construct(PermissionsHandlerInterface $permissionsHandler) {
$this -> permissionsHandler = $permissionsHandler;
}
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next) {
$routeAction = $request->route()->getActionName();
/*
do some operations
*/
return $next($request);
}
}
但$request->route()
總是返回null
,我認爲它是因爲路由器沒有分派與請求。
注:我將自己的中間件Kernal.php
全球中間件每個請求爲以下
protected $middleware = [
.
.
.
'App\Http\Middleware\PermissionsHanlderMiddleware',
];
我想路由操作名稱$next($request)
執行之前做一些權限操作之前運行。我怎樣才能做到這一點 ?
我需要'actionName'因爲我把它傳遞給Doctine SimpleAnnotationReader來獲得一些註釋,所以'$ request-> segments()'不會幫助我。有沒有其他方法可以在所有請求中執行我的中間件來檢查權限。 – 2015-02-24 14:58:27
有一種方法 - 請參閱我編輯的答案。在路由器啓動的時候可能會有一種手動調用中間件對象的方法 - 但我不能把它當作這個階段來考慮 - 明天我會玩弄它 – Laurence 2015-02-24 15:21:20