只要掌握Laravel 4.2和口才。我一直在laracasts.com上從Scratch演員角度觀看Laravel,特別是關於驗證和後續重構的課程。這些課程中使用的示例處理相對基本的用戶模型,其中僅有2個字段,即用戶名和密碼。我的用戶模型包含更多字段,我的註冊表格要求用戶重新輸入/確認他們輸入的密碼。Laravel /雄辯:從模型內驗證
似乎建議驗證用戶輸入的過程應該在模型內完成,這是完全合理的。所以就像那個教程一樣,我已經提前向我的模型添加了一個isValid
方法來驗證用戶在我的註冊表單上的輸入。我填基於輸入這樣我的用戶模型:
$input = Input::all();
if (!$this->user->fill($input)->isValid()) {
return Redirect::back()->withInput()->withErrors($this->user->errors);
}
所以我寫了我的規則,並得到了驗證工作,我現在已經準備好了用戶的輸入保存到數據庫中。然而,由於我已經填充了整個用戶輸入的模型,用戶模型實例現在包含confirm_password
的屬性,並且調用$user->save();
時給我一個錯誤(因爲我的數據庫表中沒有此字段)。另外,由於我剛剛通過用戶輸入驗證,所以密碼也不會被散列。
在驗證用戶輸入方面採取什麼樣的最佳方法VS具有模型實際上是否代表數據庫表?我知道有很多方法可以解決所有這些問題,比如將驗證移動到模型之外,也許只是讓模型存儲驗證規則等,但我可以在最佳實踐中尋找建議。
感謝
您可以使用'mutator'來設置密碼散列和'saving'事件來取消設置'confirm_password'。但是,無論如何,我都不會在模型中進行驗證,而且您的'簡單'解決方案可能會被證明是不靈活的,並且比現在看起來更復雜。 – 2014-09-21 17:58:56