2016-08-29 211 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_我已更新我的答案。 –