So erhalten Sie automatisch den Methodennamen und den Methodentyp des Laravel-Controllers
P粉573809727
P粉573809727 2024-02-26 13:54:16
0
1
440

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粉573809727
P粉573809727

Antworte allen(1)
P粉616383625

您可以将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...)

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage