我正面臨着如何在我的laravel項目中實現驗證的困境,讓我解釋一下情況。Laravel 5模型驗證和授權
- 我正在使用角JS前端用戶界面並使用restful resource controllers與laravel進行通信。
- 我用我的控制器的
store()
和update()
方法form request validation通過rules()
方法來驗證數據,並使用authorize()
方法,這種方式確保了,我的數據是正確的,只有用戶使用正確的權限級別可以添加/編輯決定授權數據。在這一點上,一切都運行良好,只要數據通過api發送的表單/ ajax請求到達。
現在,這是問題所在。有時插入/編輯操作需要以編程方式完成,例如,無論何時在表A中創建一行時,都需要在表B中創建一行,但在此之前,它還應該運行相同的驗證規則並檢查授權,以便在使用表單請求創建表B時執行此操作如果我只是打電話說TableA::Create([])
該行將被創建沒有任何驗證。
當然,我可以使用Validator::make()
模型內部以及後來, 一)它使模型凌亂b)是代碼的重複
所以,我的目標是確保無論多麼表A的記錄將進入數據庫,如果它是從應用程序完成的,那麼將在保存數據之前執行檢查,同時保持驗證和授權規則的核心。在我看來,要走的方式是在模型的「保存」事件上掛鉤,並以某種方式觸發formrequest驗證器?但我不確定。
我看到Jeffrey Way的automatic model validator,但那是Laravel 4.在Laravel 5.x中有沒有優雅的方式來做到這一點?另外,作爲一個附加問題,當我在其他地方提出這個問題時,有些人說他們「不是基於模型驗證的粉絲」,但沒有解釋爲什麼它不是一個好主意,所以我也想知道基於模型的驗證有什麼缺點?