suchen

Heim  >  Fragen und Antworten  >  Hauptteil

So erhalten Sie automatisch den Methodennamen und den Methodentyp des Laravel-Controllers

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粉573809727P粉573809727276 Tage vor442

Antworte allen(1)Ich werde antworten

  • P粉616383625

    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>

    Antwort
    0
  • StornierenAntwort