Rumah  >  Soal Jawab  >  teks badan

Bagaimana untuk mendapatkan nama kaedah dan jenis kaedah pengawal Laravel secara automatik

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粉573809727P粉573809727259 hari yang lalu415

membalas semua(1)saya akan balas

  • P粉616383625

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

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

    balas
    0
  • Batalbalas