基本上,每次控制器方法运行时我都会调用一个事件:
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)
返回控制器名称)。
那么我该怎么做呢?
P粉6163836252024-02-27 09:22:02
您可以将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...)< /p>