2017-03-06 106 views
5

我爲了編輯用戶帳戶信息被使用的情況:Laravel密碼和驗證Password_Confirmation

$this->validate($request, [ 
    'name' => 'required|min:3|max:50', 
    'email' => 'email', 
    'vat_number' => 'max:13', 
    'password' => 'min:6', 
    'password_confirmation' => 'required_with:password|same:password|min:6' 
]);` 

這在Laravel 5.2應用程序工作正常,但在5.4應用程序無法正常工作。

image

什麼是錯在這裏,或什麼是正確的方法,以如果密碼或者password_confirmation場isset不僅使所需的密碼?

回答

8

您可以使用confirmed驗證規則。

$this->validate($request, [ 
    'name' => 'required|min:3|max:50', 
    'email' => 'email', 
    'vat_number' => 'max:13', 
    'password' => 'required|confirmed|min:6', 
]); 
1

試試這個:

'password' => 'required|min:6|confirmed', 
'password_confirmation' => 'required|min:6' 
+0

沒有必要' 'password_confirmation'=>的 '需要|分:6' ' – Neabfi

+0

它不是必需的,因爲它會自動驗證確認密碼, –

3

嘗試證實並沒有password_confirmation規則:

$this->validate($request, [ 
     'name' => 'required|min:3|max:50', 
     'email' => 'email', 
     'vat_number' => 'max:13', 
     'password' => 'confirmed|min:6', 
    ]); 
+0

確認'也確保它是相同的值?因爲從文檔中我只能看到必須有一個'xyz_confirmation'字段,儘管我可能是錯的。 – Scarwolf

+0

我希望如此,我也在我的應用中使用確認 – dparoli

+0

來自Laravel 5.4文檔:'確認''驗證字段必須有一個匹配的foo_confirmation字段。例如,如果驗證中的字段是密碼,則匹配的密碼確認字段必須存在於輸入中.',匹配意味着該字段存在並且它們是相同的 – Desh901