Comment obtenir automatiquement le nom et le type de méthode du contrôleur Laravel
P粉573809727
P粉573809727 2024-02-26 13:54:16
0
1
449

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

répondre à tous(1)
P粉616383625

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...)

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal