2016-08-29 256 views
-1

我的需求只是Laravel驗證規則。我想使用Laravel驗證來檢查變量。並通過控制器返回字符串顯示自定義錯誤(我不使用視圖,刀片,會議,...我只是返回字符串)Laravel驗證規則

if(strlen($username) < 4) return '{"r": "US","msg": "username is short"}'; 
if(strlen($username) > 64) return '{"r": "UL","msg": "username is long"}'; 
if(strlen($address) > 200) return '{"r": "A","msg": "wrong address"}'; 

我想是這樣的:

if($validation->username->min has error) 
    return 'string:username is short'; 

if($validation->address->max has error) 
    return 'string:address is long'; 

if($validation->username->unique has error) 
    return 'string:username already exists'; 

回答

1

看看Laravel的驗證official documentation。您不必手動處理所有情況。 Validator::make()會爲你生成一個驗證器對象。第一個參數將把你的數據作爲一個關聯數組。第二個參數將根據需要定義所有規則。作爲第三個可選參數,如果您不喜歡默認參數,您可以定義替代錯誤消息。如果某些內容無效,將在errors()方法中返回。

$validator = Validator::make($yourDataArray, [ 
    'username' => 'min:4|max:64|exists:table,username', 
    'address' => 'max:64' 
], [ 
    'min' => ':attribute is too short.', 
    'exists' => ':attribute already exists. 
]); 

if ($validator->fails()) { 
    return $validator->errors()->all(); 
} 

如果你不想得到一次與所有錯誤的數組,你可以得到每個字段的狀態,像這樣:

if ($validator->errors()->has('username')) { // Username field is invalid 
    return $validator->errors()->first('username'); // Get the first error 
} 

如果你想知道究竟是什麼治失敗,你可以使用類似的東西:

if(isset($validator->failed()['username']['Max'])) { 
    return 'Username is too long.'; 
} 
+0

我知道了。但我想要的東西像這樣︰if($ validator-> errors() - > has('username') - > has('max')){//用戶名最大字段無效 –

+0

@xray_我已更新我的答案。 –