基本上,每次控制器方法运行时我都会调用一个事件:
public function destroy(User $user)
{
event(new AdminActivity('admin.users.destroy',class_basename(Route::current()->controller),'destroy','DELETE'));
...
}
事实上它正在保存这些信息:
event(new AdminActivity(ROUTE_NAME,CONTROLLER_NAME,CONTROLLER_METHOD_NAME,CONTROLLER_METHOD_TYPE));
现在我想自动传递所需的参数,而不是手动传递参数。
所以我需要获取路由名称、控制器方法名称和控制器方法类型 auto(就像 class_basename(Route::current ()->controller) 返回控制器名称)。
那么我该怎么做呢?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
您可以将
Route::current()传递给事件,然后从\Illuminate\Routing\Route对象中获取您需要的信息public function destroy(User $user) { event(new AdminActivity(\Illuminate\Support\Facades\Route::current())); ... }然后,在您的
AdminActivity事件类中class AdminActivity { public function __construct(\Illuminate\Routing\Route $route) { $controllerClass = class_basename($route->getController()); $controllerMethod = $route->getActionMethod(); $routeName = $route->getAction('as'); $methods = $route->methods(); } }注意:
$route->methods()的返回类型是一个数组,包含所有有效的请求方法(GET、HEAD、POST...)