如何自動取得 Laravel 控制器方法名稱和方法類型
P粉573809727
P粉573809727 2024-02-26 13:54:16
0
1
417

基本上,每次控制器方法運行時我都會呼叫一個事件:

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

   ...
}

事實上它正在保存這些資訊:

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

現在我想自動傳遞所需的參數,而不是手動傳遞參數。

所以我需要取得路由名稱控制器方法名稱控制器方法類型 auto(就像class_basename(Route::current ()->controller) 傳回控制器名稱)。

那我該怎麼做呢?

P粉573809727
P粉573809727

全部回覆(1)
P粉616383625

您可以將Route::current()傳遞給事件,然後從\Illuminate\Routing\Route物件中取得您需要的資訊

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

   …
}

然後,在您的 AdminActivity 事件類別中

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

注意$route->methods()的回傳類型是一個數組,包含所有有效的請求方法(GET、HEAD、POST...)

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!