2016-03-07 62 views

回答

2

從文檔:

在某些情況下? ,如果該字段存在於輸入數組中,您可能希望對 字段運行驗證檢查。要快速 做到這一點,添加有時裁定您的規則列表

https://laravel.com/docs/5.2/validation#conditionally-adding-rules

如果我能簡化它,我會說sometimes手段,只有在現場展示了應用的驗證規則休息在請求中。假設sometimes就像if語句,它在應用任何規則之前檢查請求/輸入中是否存在該字段。

我使用這個規則,當我有一些JavaScript的頁面,將禁用一個字段,因爲當一個字段被禁用它不會顯示在請求中。如果我只是說required|email驗證程序總是要應用規則,而使用sometimes規則將只應用驗證,如果字段顯示在請求中!希望這是有道理的。

例子:

input: [] 
rules: ['email' => 'sometimes|required|email'] 
result: pass, the request is empty so sometimes won't apply any of the rules 

input: ['email' => ''] 
rules: ['email' => 'sometimes|required|email'] 
result: fail, the field is present so the required rule fails! 

input: [] 
rules: ['email' => 'required|email'] 
result: fail, the request is empty and we require the email field! 
+1

感謝。據我所知'有時'指的是POST鍵,'require'指的是它的值。所以如果一個字段是必需的,那麼key和value都應該出現在POST .am中。 – alex

+0

實際上,您可以將驗證過程應用於任何舊數組,因此可以是「POST」或「GET」。是的,這實際上是解釋它的好方法。你當然可以結合「有時」和「必需」的規則。如果你想了解它在框架中的工作原理,你可以隨時查看源代碼:https://github.com/laravel/framework/blob/5.2/src/Illuminate/Validation/Validator.php#L262和測試: https://github.com/laravel/framework/blob/5.2/tests/Validation/ValidationValidatorTest.php#L14 – haakym