Heim > Fragen und Antworten > Hauptteil
Grundsätzlich rufe ich jedes Mal, wenn eine Controller-Methode ausgeführt wird, ein Ereignis auf:
public function destroy(User $user) { event(new AdminActivity('admin.users.destroy',class_basename(Route::current()->controller),'destroy','DELETE')); ... }
Tatsächlich werden diese Informationen gespeichert:
event(new AdminActivity(ROUTE_NAME,CONTROLLER_NAME,CONTROLLER_METHOD_NAME,CONTROLLER_METHOD_TYPE));
Jetzt möchte ich die erforderlichen Parameter automatisch übergeben, anstatt sie manuell zu übergeben.
Also muss ich den Routennamen, den Controller-Methodennamen und den Controller-Methodentyp automatisch abrufen (genau wie class_basename(Route::current ()->controller)
den Controller-Namen zurückgibt).
Was soll ich also tun?
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>