2015-09-27 29 views
1

我希望將用戶重定向到另一個頁面,如果他進入重複數據5個屬性(如果只是複製了4個或更少,他應該不被重定向)。 我試圖做到這一點使用laravel 5.1內置的驗證。如何寫的,如果在Laravel驗證條件執行,當且僅當所有的屬性失敗

$failure = Validator::make($request->all(), [ 
     'firstName' => 'unique:registrations', 
     'lastName' => 'unique:registrations', 
     'line1' => 'unique:registrations', 
     'city' => 'unique:registrations', 
     'country' => 'unique:registrations' 
    ]); 

如何寫一個if條件如果所有5的上述屬性失敗,執行

if ($failure->fails()) 

如果至少一個屬性失敗代碼執行。請幫助我解決方案。

回答

0
$check = $failure->errors(); 

    if ($check->has('firstName') && $check->has('lastName') && $check->has('line1') && $check->has('city') && $check->has('country')) { 

     return redirect('<path>'); 
    } 

這個工作

1
list($key,$messages) = array_divide($failure->errors()->toArray()); 
if($key == ['firstname','lastname','line1','city','country']){ 
    //all has failed 
} 
+0

我沒有檢查,如果你的答案是正確的,我剛收到你的答案的一些想法,謝謝! (Y) –

0

如果不管什麼屬性是重複的更合適的方式:

if (count($failure->getMessageBag()) >= 4) { 
    return ... 
} 

如果只針對某些領域,更華麗的方式:

if($validator->getMessageBag()->has(['firstName', 'lastName', 'line1', 'city', 'country'])) { 
    return ... 
} 

您可以使用errors()getMessageBag() - 這是無論:)

相關問題