Laravel验证规则

时间:2016-08-29 06:03:20

标签: php laravel laravel-5.2

我的需求只是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 个答案:

答案 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.';
}