Rumah > Soal Jawab > teks badan
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粉6163836252024-02-27 09:22:02
Anda boleh mendapatkan maklumat yang anda perlukan daripada Route::current()
传递给事件,然后从IlluminateRoutingRoute
objek
public function destroy(User $user) { event(new AdminActivity(\Illuminate\Support\Facades\Route::current())); ... }
Kemudian, dalam AdminActivity
kelas acara
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>