Bagaimana untuk mendapatkan nama kaedah dan jenis kaedah pengawal Laravel secara automatik
P粉573809727
P粉573809727 2024-02-26 13:54:16
0
1
443

Pada asasnya, setiap kali kaedah pengawal berjalan, saya memanggil acara:

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

   ...
}

Malah ia menyimpan maklumat ini:

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

Sekarang saya mahu menghantar parameter yang diperlukan secara automatik dan bukannya menghantarnya secara manual.

Jadi saya perlu mendapatkan nama laluan, nama kaedah pengawal dan jenis kaedah pengawal auto (sama seperti class_basename(Route::current ()->controller) mengembalikan nama pengawal).

Jadi apa yang perlu saya lakukan?

P粉573809727
P粉573809727

membalas semua(1)
P粉616383625

Anda boleh mendapatkan maklumat yang anda perlukan daripada Route::current()传递给事件,然后从IlluminateRoutingRouteobjek

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

   ...
}

Kemudian, dalam AdminActivity kelas acara

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

Nota: Jenis pemulangan $route->methods() ialah tatasusunan, mengandungi semua kaedah permintaan yang sah (DAPATKAN, KEPALA, POS...)

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan