Maison  >  Questions et réponses  >  le corps du texte

Comment obtenir automatiquement le nom et le type de méthode du contrôleur Laravel

En gros, chaque fois qu'une méthode de contrôleur s'exécute, j'appelle un événement :

public function destroy(User $user)
{
   event(new AdminActivity('admin.users.destroy',class_basename(Route::current()->controller),'destroy','DELETE'));

   ...
}

En fait, il enregistre ces informations :

event(new AdminActivity(ROUTE_NAME,CONTROLLER_NAME,CONTROLLER_METHOD_NAME,CONTROLLER_METHOD_TYPE));

Maintenant, je souhaite transmettre automatiquement les paramètres requis au lieu de les transmettre manuellement.

Je dois donc obtenir le nom de la route, le nom de la méthode du contrôleur et le type de méthode du contrôleur auto (tout comme class_basename(Route::current ()->controller) renvoie le nom du contrôleur).

Alors, que dois-je faire ?

P粉573809727P粉573809727210 Il y a quelques jours384

répondre à tous(1)je répondrai

  • P粉616383625

    P粉6163836252024-02-27 09:22:02

    Vous pouvez obtenir les informations dont vous avez besoin à partir du Route::current()传递给事件,然后从IlluminateRoutingRouteobjet

    public function destroy(User $user)
    {
       event(new AdminActivity(\Illuminate\Support\Facades\Route::current()));
    
       ...
    }
    
    

    Ensuite, dans votre AdminActivityclasse événementielle

    class AdminActivity
    {
        public function __construct(\Illuminate\Routing\Route $route)
        {
            $controllerClass  = class_basename($route->getController());
            $controllerMethod = $route->getActionMethod();
            $routeName        = $route->getAction('as');
            $methods          = $route->methods();
        }
    }
    

    Remarque : Le type de retour de $route->methods() est un tableau contenant toutes les méthodes de requête valides (GET, HEAD, POST...)< /p>

    répondre
    0
  • Annulerrépondre