我的需求只是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';
答案 0 :(得分: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.';
}