驚喜!終於找到了 Laravel-admin 中使用請求類驗證表單的方法,無需再次編寫多條 rules

zhaiduting發表於2020-01-06

雖然admin中文文件 給出了驗證規則的編寫方法,但是並沒有介紹怎麼使用已有的請求類進行驗證 。你將不得不編寫類似於$form->text('title')->rules('required|min:3');這樣的多條 rules()

經過數小時的探索,我終於找到了更加優雅的寫法。只需在繼承了AdminController的控制器裡面覆寫一個store()函式即可,如下所示

class UserController extends AdminController
{
    public function store()
    {
        app(UserRequest::class);
        return $this->form()->store();
    }
    ...
}

這個函式裡面的關鍵程式碼是app(UserRequest::class),只需要把請求類的名稱用app()函式套一下就OK了!如果控制器呼叫的是update()方法,則覆寫update()方法(程式碼與上面的類似,只需修改一下儲存資料的函式名稱即可)。效果如下圖
驚喜!終於找到了 laravel-admin 中使用請求類驗證表單的方法,無需二次編寫rules
或許大家會想到下面這樣的寫法,寫法是優雅,可惜會報錯Declaration of App\Admin\Controllers\UserController::store(App\Http\Requests\UserRequest $request) should be compatible with Encore\Admin\Controllers\AdminController::store()

    public function store(UserRequest $request)
    {
        return $this->form()->store();
    }

本例安裝的encore/laravel-admin版本為1.7.9

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章