2017-03-29 40 views
3

我試圖用laravel創建並更新用戶5.4如何在Laravel中驗證輸入字段的值是否爲空

這是爲創建用戶添加的驗證。有用。

$this->validate($request, [ 
    'name' => 'required|max:255', 
    'email' => 'required|email|max:255|unique:users', 
    'password' => 'required|min:6|confirmed', 
]); 

更新密碼字段不是必需的。但如果密碼字段不爲空,則驗證min:6並確認規則。與sometimes試過..但沒有工作..

$this->validate($request, [ 
    'name' => 'required|max:255', 
    'email' => 'required|email|max:255|unique:users,email,'.$id, 
    'password' => 'sometimes|min:6|confirmed', 
]); 
+1

如果您有2個獨立的創建和更新函數,您可以從更新中刪除密碼驗證規則 – DestinatioN

回答

0

創建基於密碼字段規則。僅當密碼字段存在時纔有效。

if ($request->input('password')) { 
    $rules = [ 
     'name' => 'required|max:255', 
     'email' => 'required|email|max:255|unique:users,email,'.$id, 
     'password' => 'required|min:6|confirmed', 
    ]; 
} else { 
    $rules = [ 
     'name' => 'required|max:255', 
     'email' => 'required|email|max:255|unique:users,email,'.$id 
    ]; 
} 

$this->validate($request, $rules); 
0

這是我會怎麼做:

//For new or create : 
$this->validate($request, [ 
    'name' => 'required|max:255', 
    'email' => 'required|email|max:255|unique:users', 
    'password' => 'required|min:6|confirmed', 
]); 

//For edit or update: 
$this->validate($request, [ 
    'name' => 'required|max:255', 
    'email' => 'required|email|max:255|unique:users', 
    'password' => 'min:6|confirmed',//just remove required from password rule 
]); 

說明:
這樣,該值將在請求才能通過驗證時,它會被定義(目前)
如果您使用可爲空,比驗證器將接受null作爲值(我假設是n ot accepted)
如果您刪除密碼驗證從此更新比這個輸入將不會被驗證,任何值將被接受(這是再次不能接受);

+0

在回答之前仔細閱讀問題。 – noufalcep

相關問題